2 zhuguocheng29 zhuguocheng29 于 2014.10.12 22:15 提问

c++构造函数的问题,求大神赐教

#include
class A
{
public :
A()
{
a=0;
cout<<"A's default constructor called.\n";
}
A(int i)
{
a=i;
cout<<"A's constructor called.\n";
}
~A()
{
cout<<"A's destructor called.\n";
}
void print()const
{
cout<<a<<",";
}
int Geta()
{
return a;
}
private :
int a;

};

class B:public A
{
public :
B()
{
b=0;
cout<<"B's default constructor called.\n";
}
B(int i,int j,int k);
~B()
{
cout<<"B's destructor called.\n";
}
void print();
private:
int b;
A aa;
};

B::B(int i,int j,int k):A(i),aa(j)
{
b=k;
cout<<"B's constructor called.\n";
}

void B::print()
{
A::print();
cout<<b<<","<<aa.Geta()<<endl;
}

void main()
{
B bb;
bb=B(1,2,5);
bb.print();
}

主要是main函数中这条语句不理解:bb=B(1,2,5). B(1,2,5)是什么意思?不应该是bb=B b1(1,2,5)吗?

2个回答

xiezongzhou123
xiezongzhou123   2014.10.13 12:03

bb=B(1,2,5)
先调用B的构造函数,
然后调用缺省的赋值操作符赋值给bb

VisualEleven
VisualEleven   Ds   Rxr 2015.01.04 17:39

B bb;
bb=B(1,2,5);
先构造一个临时的对象TEMP,然后将临时对象赋值给已存在对象bb

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!