• 全部
  • 问答

C++继承解惑?

oulix 十字猫(北京欧乐吧技术有限公司) 技术总监  2002-11-14 11:01:21
看下面到代码:
#include <iostream.h>

class CShape{
public:
CShape(){};
virtual ~CShape();
};

CShape::~CShape(){

}

class CCube{
public:
CCube(){};
~CCube();
};

CCube::~CCube(){
cout << "CCube destroyed." << endl;
}

class CSquare{
public:
CSquare(){};
~CSquare();
};

CSquare::~CSquare(){
cout << "CSquare destroyed." << endl;
}


void main(void)
{
/*这样写无法通过VC+的编译器编译
CCube* pCube =new CSquare();
*/
CSquare *pSquare = new CSquare();
CCube *pCube = (CCube*)pSquare;
delete (pCube);
}
得到的结果只有
一句
CCube destrcutor.
为什么CShape和CSquare的析构函数没被调用?
...全文
11 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
oulix 2002-11-14
多些两位,是我写代码出了错。散分!
回复
ddmpqcw 2002-11-14
/*这样写无法通过VC+的编译器编译
CCube* pCube =new CSquare();
*/

CSquare不是从CCube继承,不能这样定义
CCube* pCube=static_cast<CCube*>(new CSquare());

回复
zxm954712 2002-11-14
当然没有调用了,他们又不是继承关系。如下:
#include <iostream.h>

class CShape{
public:
CShape(){};
virtual ~CShape();
};

CShape::~CShape(){
cout << "CShape destroyed." << endl;
}

class CCube: CShape{
public:
CCube(){};
virtual ~CCube();
};

CCube::~CCube(){
cout << "CCube destroyed." << endl;
}

class CSquare: public CCube{
public:
CSquare(){};
~CSquare();
};

CSquare::~CSquare(){
cout << "CSquare destroyed." << endl;
}


void main(void)
{
/*这样写无法通过VC+的编译器编译
CCube* pCube =new CSquare();
*/
CSquare *s = new CSquare();
//CCube *pCube = new CCube();
//pCube = s;

delete (s);
}
就可以了
回复
oulix 2002-11-14
补充,那个CShape的析构函数有代码的
cout << "CShape destroyed." <<endl;
回复
发帖
C语言
创建于2007-09-28

6.3w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-11-14 11:01
社区公告
暂无公告