1:
类的结尾大括号后没加分号
2:
ch = NULL是个赋值语句,这里会出现段错误,最后写成这样:
if (NULL == ch)
这样哪怕少个“=”也会报错提醒。
3:
4:
因为类自己会创建一个浅拷贝构造函数
5:
- 下述程序运行后,显示结果为( A )。//不看初始化列表,先看继承,再看成员
class B1
{
public:
B1(int i) {cout<<"constructing B1 "<<i<<endl;}
~B1( ) {cout<<"destructing B1 "<<endl;}
};
class B2
{
public:
B2(int j) {cout<<"constructing B2 "<<j<<endl;}
~B2( ) {cout<<"destructing B2 "<<endl;}
};
class B3
{
public:
B3( ){cout<<"constructing B3 *"<<endl;}
~B3( ) {cout<<"destructing B3 "<<endl;}
};
class C: public B2, public B1, public B3
{
public:
C(int a, int b, int c, int d):
B1(a),memberB2(d),memberB1(c),B2(b){}
private:
B1 memberB1;
B2 memberB2;
B3 memberB3;
};
void main( )
{ C obj(1,2,3,4); }
[A] constructing B2 2 [B] constructing B1 1
constructing B1 1 constructing B2 2
constructing B3 * constructing B3 *
constructing B1 3 constructing B1 3
constructing B2 4 constructing B2 4
constructing B3 * constructing B3 *
destructing B3 destructing B3
destructing B2 destructing B2
destructing B1 destructing B1
destructing B3 destructing B3
destructing B1 destructing B1
destructing B2 destructing B2
[C] constructing B2 2 [D] constructing B2 2
constructing B1 1 constructing B1 1
constructing B3 * constructing B3 *
constructing B1 3 constructing B3 *
constructing B2 4 constructing B1 3
constructing B3 * constructing B2 4
destructing B3 destructing B3
destructing B2 destructing B2
destructing B1 destructing B1
destructing B3 destructing B3
destructing B2 destructing B1
destructing B1
6:
翻译是这个类不完整,这个错误的出现意味着,继承了Object的类没写完整,比如构造函数没写完,析构函数没写,虚函数没实现,当然最容易忽略的就是类的在定义时最后的括号或者分号没写(因为他不报错)。
: