习题5
一、填空题
- 将关键词
const
写在函数参数列表之后,函数体之前,说明该函数是 常 成员函数。 - 一个const对象只能访问 常 成员函数。
- 在函数体之前加 const 关键字可以防止覆盖函数改变数据成员的值。
二、单项选择题
- 简单成员函数的声明一般不含关键字(B )。
A.double
B.static
C.float
D.int
- 已知:
print()
函数是一个类的常成员函数,它无返回值,下列表示中正确的是( A)。
A.void print() const
B.const void print()
C.void const print()
D.void print(const)
- 下列各类函数中,不是类的成员函数的是(C )。
A. 构造函数 B. 析构函数 C. 友元函数 D. 复制初始化构造函数 - 对友元函数描述正确的是(A )。
A. 一个类的友元函数是在该类中说明的一个函数 B. 一个类的友元函数是该类的一个成员
C. 友元函数只允许访问该类对象的私有成员 D. 友元函数不允许访问该类的私有成员
三、改错题
- 改正下面类定义的错误并说明理由。
class base { int number; static int a; public: void set(int i, int j); static int geta() { return a; } static int getn() { return number; } void show() { cout << number << "," << a << endl; } };
答:static int getn(){return number;}错误
静态成员函数,只允许访问静态成员变量,number不是静态成员变量。 - 假设一个正确定义的类Test,改正主程序中的错误。
void main() { test *two[2] = { test(4, 5), test(6, 8) }; for(i = 0 ; i < 2 ; i++) delete two[i]; }
答:delete two[i] 错误;
在栈中创建的指针对象系统会自动回收。
四、完成程序题
完成下面程序并给出运行结果。
#include <iostream>
using namespace std;
class test {
int X:
public:
test(int a) { X = a; }
int GetX() { return X; }
};
void main() {
int i;//填空1,定义变量i
test *p, a[2][3] = { {1, 2, 3}, {4, 5, 6} };
for( i=0,p=a[0][0]; i <= 6; p++) {//填空二,初始化变量i,p
if((p - a[0]) % 3 == 0) cout << endl;
cout << p->GetX() << " ";
}
}
1 2 3
4 5 6
五、编程题
- 声明复数的类complex,使用友元函数add实现复数的加法。
#include <iostream> using namespace std; class Complex { private: double real,image; public: Complex(); Complex(double a,double b){ real = a; image = b; } void setRI(double a,double b){ real = a; image = b; } double getReal(){ return real; } double getImage(){ return image; } void print(){ if(image>0){ cout << "复数:" << real << "+" << image << endl; }else{ cout << "复数:" << real << "-" << image << endl; } } friend Complex add(Complex,Complex); }; Complex add(Complex c1,Complex c2){ Complex c3; c3.real = c1.real + c2.real; c3.image = c1.image + c2.image; return c3; } int main(int argc, char const *argv[]) { Complex c1(22,0.888),c2,c3; c2.setRI(90,122.222); c3 = add(c1,c2); cout << "复数一:" ; c1.print(); cout << "复数二:" ; c2.print(); cout << "相加后:" ; c3.print(); return 0; }
- 设计一个使用常量成员函数的示范程序。
#include <iostream> using namespace std; class Base { double x,y; const double p; public: Base(double m,double n,double d):p(d){ x = m;y=n; } void Show(); void Show() const; }; void Base::Show(){ cout << x << "," << y << " p=" << p << endl; } void Base::Show() const{ cout << x << "," << y << " const p=" << p << endl; } int main() { Base a(8.9,2.5,3.1416); const Base b(2.5,8.9,3.14); b.Show(); a.Show(); return 0; }
- 编写一个程序,该程序建立一个动态数组,为动态数组的元素赋值,显示动态数组的值并删除动态数组。
#include <iostream> using namespace std; int main(int argc, char const *argv[]) { cout << "请输入数组的大小:"; int n,temp; cin >> n; double *arr = new double[n]; for(int i=0;i<n;i++){ cout << "arr[" << i << "]="; cin >> temp; *(arr+i) = temp; } cout << "数组元素如下:" << endl; for(int i=0;i<n;i++){ cout << "arr["<< i <<"]=" << arr[i] << endl; } delete [] arr; return 0; }
- 定义一个Dog类,它用静态数据成员Dogs记录Dog的个体数目。静态成员函数GetDogs用来存取Dogs。设计并测试这个类。
#include <iostream> using namespace std; class Dog { static int Dogs; public: Dog(){ Dogs++; } int GetDogs(){ return Dogs; } }; int Dog::Dogs = 0; int main(int argc, char const *argv[]) { Dog d[5],d1; cout << d1.GetDogs() << endl; return 0; }
历史上的今天:
欢迎来到菜鸟头头的个人博客本文章百度已收录,若发现本站有任何侵犯您利益的内容,请及时邮件或留言联系,我会第一时间删除所有相关内容。
2018年3月6日 17:26 沙发
最近要被c++洗脑了
2018年3月7日 13:24 1层
@软件开发 看了c++虽然复杂,我像设计的功能应该很丰富。
2018年3月6日 11:25 板凳
每天学习还要把这些再发到博客,辛苦了
2018年3月7日 13:25 1层
@玩游戏赚钱 唉,你们才SEO才辛苦
2018年3月8日 23:58 2层
@头头 哎,一天天的都是瞎忙
2018年3月9日 16:01 3层
@玩游戏赚钱 其实只要喜欢就行