关于c++派生类利用构造函数初始化列表初始化基类的问题
c++派生类利用构造函数初始化列表初始化基类时如果形参少那么可以直接赋值,如果形参有67个,那么怎么利用对象赋值;classA{public:A(intaa,intbb,...
c++派生类利用构造函数初始化列表初始化基类时如果形参少那么可以直接赋值,如果形参有6 7个,那么怎么利用对象赋值;
class A{
public:
A(int aa,int bb,int cc){....}
A(A &a){.......} //定义一个A类的构造函数,利用A类的对象的引用给A类对象初始化
private:
int a,b,c;
};
class B:public A{
public:
B(int dd,int ee,A a):A(a){....} //我想的就是利用临时A类的对象a给B类中继承的A类初始化
//但我不知道这样行不行
private:
int d,c;
};
请教高手,这种方法行不行,怎么用基类的对象给基类初始化 展开
class A{
public:
A(int aa,int bb,int cc){....}
A(A &a){.......} //定义一个A类的构造函数,利用A类的对象的引用给A类对象初始化
private:
int a,b,c;
};
class B:public A{
public:
B(int dd,int ee,A a):A(a){....} //我想的就是利用临时A类的对象a给B类中继承的A类初始化
//但我不知道这样行不行
private:
int d,c;
};
请教高手,这种方法行不行,怎么用基类的对象给基类初始化 展开
1个回答
展开全部
用同一个类的对象给初始化另一个对象,叫拷贝构造。
少年,这个是完全可以的!
A(A &a){.......}这个就叫拷贝构造函数
不过一般都加上const这么写
A(const A &a){.......}
B(int dd,int ee,A a):A(a){....}
一般传递参数的时候都这么写:
B(int dd,int ee,const A& a):A(a){....}
更多追问追答
追问
还有个问题
B(int dd,int ee,const A& a):A(a){....} 中的a是一个已经定义的A类的对象,就是下面:
A a(1,2,3);
B b(1,2,a);
我想就是建立B类对象时不用先建立一个A类对象,直接在B类建立对象时定义一个A类的临时对象
形如:
B b(1,2,A a(1,2,3));
这样编译不通过,但有没有方法实现这样的初始化
追答
你还一半一半的问。。。
B b(1,2,A(1,2,3));
这样就行了,不用定义名称,直接调用构造函数,就能创建一个临时对象了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询