class CTyre //轮胎类
{
private:
int radius;//半径
int width;//宽度
public:
CTyre(int r,int w):radius(r),width(w){}
};
class CEngine//引擎类
{};
class CCar{//汽车类
private:
int price;//价格
CTyre tyre;
CEngine engine;
public:
CCar(int p,int tr,int tw);
};
CCar::CCar(int p,int tr,int w):price(p),tyre(tr,w){};
int main()
{
CCar car(20000,17,225);
return 0;
}
CCar car
会编译出错car.tyre
该如何初始化,CTyre
内部的构造函数是需要参数的,你没给,所以编译出错car.engine
的初始化没有问题,他使用默认的无参构造函数class A
{
public:
A(){cout<<"default"<<endl;}
A(A&a){cout<<"copy"<endl;}
};
class B{A a;};
int main()
{
B b1,b2(b2);
return 0;
}
default
copy
说明b2.a是用类A的复制构造函数初始化的,而且调用复制构造函数时的实参就是b1.a
原文:https://www.cnblogs.com/2002ljy/p/12261992.html