我想请问一个c++对象的问题

xuhangtimitimi 2009-02-27 04:27:43
有class A,class B:public Aclass C:public B
这时用C构造一个对象c ,C c,同时会调用类B和A的构造函数,也就是c对象包含a和b,
然后要是再用A a构造一个A的对象,此时岂不是内存中有两份a对象
帮我解释一下好吗
...全文
91 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
passionboy03 2009-02-27
  • 打赏
  • 举报
回复
#include <iostream>

using namespace std;
class A
{
public:
A()
{
cout<<"A()"<<endl;
};
~A()
{
cout<<"~A()"<<endl;
};
};
class B:public A
{

public:
B()
{
cout<<"B()"<<endl;
};
~B()
{
cout<<"~B()"<<endl;
};;
};
class C:public B
{
public:
C()
{
cout<<"C()"<<endl;
};;
~C()
{
cout<<"~C()"<<endl;
};;
};

int main ()
{
C *q = new C();
delete q;
return 0;
}
运行结果:
A()
B()
C()
~C()
~B()
~A()
[Quote=引用楼主 xuhangtimitimi 的帖子:]
有class A,class B:public Aclass C:public B
这时用C构造一个对象c ,C c,同时会调用类B和A的构造函数,也就是c对象包含a和b,
然后要是再用A a构造一个A的对象,此时岂不是内存中有两份a对象
帮我解释一下好吗
[/Quote]
liuwg9999 2009-02-27
  • 打赏
  • 举报
回复
比如父亲是双眼皮,儿子继承了父亲的双眼皮,构造儿子的时候只是用了父亲双眼皮的这个基因,但并不在构造一次父亲,不知道这样理解对不对呢
疯哥哥 2009-02-27
  • 打赏
  • 举报
回复
"也就是c对象包含a和b" //c 是一个a,是一个b,但不是包含关系.
两个A的对象没有问题啊.对象是可以有多个的.楼主对类和对象的理解有误.
类是一个概念.对象是类的一个实例化.
把人类看作一个类,那么你和我,大家,任何一个人,都是这个类的对象啊..

class man
{
...
};
man you;
man he;
//you 和 he 都是man对象.
SendDlgItem 2009-02-27
  • 打赏
  • 举报
回复
怎么会这样理解呢??
继承只是子类可以调用父类的函数以及一些变量
并不是包含··
jqx_ah 2009-02-27
  • 打赏
  • 举报
回复
不是你那样理解的
再说建立两队对象 也不是不可能
xuhangtimitimi 2009-02-27
  • 打赏
  • 举报
回复
is-a, has-a
xuhangtimitimi 2009-02-27
  • 打赏
  • 举报
回复
好像是的
hhyttppd 2009-02-27
  • 打赏
  • 举报
回复
is-a, has-a不要搞错

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧