1.有一个类A,其数据成员如下:
class A {
...
private:
int a;
public:
const int b;
float* &c;
static const char* d;
static double* e;
};
则构造函数中,成员变量一定要通过初始化列表来初始化的是:
A a b c
B b c
C b c d e
D b c d
E b
F c
初始化列表的位置才是真正的初始化,构造函数体中只是赋值初始化列表中只能对类中非静态成员变量进行初始化必须采用初始化列表进行初始化的情况:1.const修饰的成员变量2.引用类型的成员变量3.类类型对象,该类没有默认的构造函数
2. C++ 中,有如下类模板定义
template<class T> class BigNumber{
long n;
public:
BigNumber(T i) :n(i) {}
BigNumber operator+(BigNumber b) {
return BigNumber(n + b.n);
}
};
已知 b1, b2 是 BigNumber 的两个对象,则下列表达式中错误的是
A 3+3
B b1+3
C b1+b2
D 3+b1
如果将运算符重载为类的成员函数,参数个数要比该运算符需要的参数个数少1因为成员函数具有隐藏的this指针A.整型相加B.如果类中具有单个参数的构造函数,该构造函数具有类型转换的作用编译器在编译代码阶段,会调用单参构造函数将3转化为BigNumber对象C.对两个BigNumber的对象进行相加D.第一个参数为隐藏的this指针,第一个参数必须为BigNumber对象
3.下面有关友元函数与成员函数的区别,描述错误的是
A 友元函数可以让本类和友元类对象调用
B 友元函数和类的成员函数都可以访问类的私有成员变量或者是成员函数
C 类的成员函数是属于类的,调用的时候是通过指针this调用的
D 友元函数是有关键字friend修饰,调用的时候也是通过指针this调用的
友元函数:不是类的成员函数,友元函数可以访问类的私有成员成员函数:具有隐藏的this指针,受访问限定符的作用,通过对象来调用
编程题