关于析构的问题,..附代码...

Torrice Torrice 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
1.正常的程序*****************************

#include <iostream>

using namespace std;

class CSomething
{
public:
CSomething(){cout<<"2";}
virtual ~CSomething(){cout<<"2";}
};

class CParent
{
public:
CParent(){cout<<"1";}
virtual ~CParent(){cout<<"1";}
};

class CChild : public CParent
{
public:
CChild(){cout<<"3";}
virtual ~CChild(){cout<<"3";}

protected:
CSomething something;
};

int main(int argc,char** argv)
{
CParent* pParent = new CChild();
delete pParent;
return 0;
}

输出"123321"

2.**************************************

#include <iostream>

using namespace std;

class CSomething
{
public:
CSomething(){cout<<"2";}
~CSomething(){cout<<"2";}
};

class CParent
{
public:
CParent(){cout<<"1";}
~CParent(){cout<<"1";}
};

class CChild : public CParent
{
public:
CChild(){cout<<"3";}
~CChild(){cout<<"3";}

protected:
CSomething something;
};

int main(int argc,char** argv)
{
CParent* pParent = new CChild();
delete pParent;
return 0;
}

为何输出"1231"?

3.****************************************

#include <iostream>

using namespace std;

class CSomething
{
public:
CSomething(){cout<<"2";}
~CSomething(){cout<<"2";}
};

class CParent
{
public:
CParent(){cout<<"1";}
virtual ~CParent(){cout<<"1";}
};

class CChild : public CParent
{
public:
CChild(){cout<<"3";}
~CChild(){cout<<"3";}

protected:
CSomething something;
};

int main(int argc,char** argv)
{
CParent* pParent = new CChild();
delete pParent;
return 0;
}

为何也运行正常,输出"123321"?

4.**********************************

#include <iostream>

using namespace std;

class CSomething
{
public:
CSomething(){cout<<"2";}
~CSomething(){cout<<"2";}
};

class CParent
{
public:
CParent(){cout<<"1";}
~CParent(){cout<<"1";}
};

class CChild : public CParent
{
public:
CChild(){cout<<"3";}
virtual ~CChild(){cout<<"3";}

protected:
CSomething something;
};

int main(int argc,char** argv)
{
CParent* pParent = new CChild();
delete pParent;
return 0;
}

为何不能正常运行? 中间结果为"1231"?

5.继承中的析够内在机制是什么?讨论讨论吧.

讲的有理就有分:)
...全文
评论 38
收藏 已收藏
分享
返回顶部
Torrice
C++ 语言 65,214 成员 250,514 内容