class A
{
A (A & a);
.......
}
class B : public A
{
B (B & b);
.......
}
class C : public B
{
C (C & c);
..........
}我现在用C类建了一个实例,调用赋值构造函数。但我希望让基类进行一些赋值工作,因为从基类继承的成员太多。我用这样的方法
C (C & c) : B(B(c))
{
.....
}
想把c强制转化成B类的,然后调用B类的赋值构造函数。但这样不行。请问,那应该用什么样的方法?
还有,把一个小类的指针强制转化成它的派生类的,即使那些共有的成员也会出错。那我如何可以把一个小类的变成大类的?(比如共有的成员赋值,没有的给0)。是不是用上面的方法?或者还有什么好方法?谢谢。
{
A (A & a);
.......
}
class B : public A
{
B (B & b);
.......
}
class C : public B
{
C (C & c);
..........
}我现在用C类建了一个实例,调用赋值构造函数。但我希望让基类进行一些赋值工作,因为从基类继承的成员太多。我用这样的方法
C (C & c) : B(B(c))
{
.....
}
想把c强制转化成B类的,然后调用B类的赋值构造函数。但这样不行。请问,那应该用什么样的方法?
还有,把一个小类的指针强制转化成它的派生类的,即使那些共有的成员也会出错。那我如何可以把一个小类的变成大类的?(比如共有的成员赋值,没有的给0)。是不是用上面的方法?或者还有什么好方法?谢谢。
解决方案 »
- 学习c++请推荐基本好书,谢谢
- VC matlab 混合编程参数传递的问题,我几天都没有解决,高手看一下
- DVDRW,CDRW如何copy文件上去,还有怎么知道它的剩余空间
- 一个很简单的问题在---线等待!
- 高分求"疑":找工作的感受(有工作经验的多谢赐教:)
- 请问,我在dll中声明的变量,如何在exe文件中使用,现在它说我没声明!
- VC的类库更新在哪儿可以下载啊?
- 最小化所有窗口发送消息的问题?
- 我的程序在vc++2005下的release下可以编译执行,但是不可以调试执行
- 在没有office的机器上不能生成word文件,提示创建word程序失败.怎样解决?
- 串口是独占资源,那是否可以在waitcommevent的时候对它进行写操作呢?
- 有没有办法重绘标题栏的背景(用渐变)
因为C类对B类是继承关系,所以C类中的Copy 构造函数
C(C &c)会在内部自动调用B类的Copy 构造函数,当然这部分代码是由编译器安插进去的。
所以,你只要在A,B,C类中的Copy构造函数中完成相应类的数据成员的初始化即可。
#include <iostream.h>
class CA
{
public:
CA(){}
int x;
};class CB:public CA
{
public:
CB(){}
int y;
};void main(void)
{
CA *pa = new CA;
pa->x = 23;
CB *pb = (CB *)pa;
cout<<pb->x<<endl; //ok
cout<<pb->y<<endl; //error
}