关于继承的一点小问题

Rubi 2005-04-23 11:55:38
#include "stdafx.h"
#include "iostream.h"

class CA
{
public:
int m_nA;
char m_cB;
};

class CB:public CA
{
public:
int m_nD;
char m_cE;
};


void main(void)
{
CA a;
CB b;
a.m_cB= 'e';
a.m_nA= 4;
b.m_nA = 1;
b.m_cB = 'c';
b.m_nD = 2;
b.m_cE = 'd';

}

CA为基类,CB为派生类,那么看看上面&a,&b,&a.m_cB,&a.m_nA,&b.m_nA,&b.m_cB,&b.m_nD,&b.m_cE ,为什么我的基类的地址还在派生类的后面,而且都是m_cB,为什么,a.m_cB 和b.m_cB的地址不一样呢?为什么?
...全文
125 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rubi 2005-04-24
  • 打赏
  • 举报
回复
那不是浪费空间了阿
晨星 2005-04-24
  • 打赏
  • 举报
回复
继承是这么体现出来的:

void main(void)
{
CB b;
b.m_nA = 1;
b.m_cB = 'c';
b.m_nD = 2;
b.m_cE = 'd';
}
这难道还没体现么?你的CB类中表面根本没有nA和cB,这里却可以直接用。
llf_hust 2005-04-24
  • 打赏
  • 举报
回复
是在你声明类的对象的时候编译器来根据类的大小来分配内存
Rubi 2005-04-24
  • 打赏
  • 举报
回复
那么继承怎么体现出来呢?
比如我是不是在CB中再去开辟一个内存空间存放CA的数据成员
Death_YEH 2005-04-24
  • 打赏
  • 举报
回复
类是数据类型
对象是变量
比如:
int a;
int b;
a和b同一个地址吗?
qiqi162002 2005-04-24
  • 打赏
  • 举报
回复
==>>为什么,a.m_cB 和b.m_cB的地址不一样呢?
a是a , b是b ,如果a b中的m_cB是一样的话,请问怎么区分a,b的数据。a,b 分别有自己的m_cB,除非你的m_cB是静态的成员。
晨星 2005-04-24
  • 打赏
  • 举报
回复
“类”没有什么地址,对象才有地址。
dongpy 2005-04-24
  • 打赏
  • 举报
回复
都是m_cB,为什么,a.m_cB 和b.m_cB的地址不一样呢?
=======================
不同的对象,占用不同的内存空间
llf_hust 2005-04-24
  • 打赏
  • 举报
回复
为什么我的基类的地址还在派生类的后面,而且都是m_cB
/* 他们的地址是编译器分配的 */
llf_hust 2005-04-24
  • 打赏
  • 举报
回复
a.m_cB 和b.m_cB的地址不一样呢?为什么?/* a.m_cB是对象a的成员 b.m_cB通过继承使m_cB成为对象b的成员.因为a和b的地址不一样,所以他们的成员地址当然也不一样
晨星 2005-04-24
  • 打赏
  • 举报
回复
你把类和对象搞混了。
a和b是两个对象,他们之间一点关系都没有。
再有一点就是变量地址跟变量定义的关系,那要看函数调用栈是怎么增长的,编译器又是怎样排列各个局部变量的。
Rubi 2005-04-24
  • 打赏
  • 举报
回复
我的意思是既然派生类可以直接调用基类的成员,那么派类是否可以理解为在基类的后面再加上自己的成员呢?这样不是在分配的时候可以节约空间了吗?
CW_Wei 2005-04-24
  • 打赏
  • 举报
回复
那楼主以为继承应该怎么体现出来呢?
joshion 2005-04-24
  • 打赏
  • 举报
回复
谁能帮我设计这个程序啊 ????(我真的很菜  帮帮我吧)
   证明:一个等边三角形ABC,任意取一点P,都使得PB+PC>=PA.


帮我设计一下呀 !各位高手,不要看题目简单就不要回复
可以加我QQ63158556   然后回复我  谢谢了
晨星 2005-04-24
  • 打赏
  • 举报
回复
浪费了啥空间啊?
你好像有个问题想错了,但偶不知道是哪个问题。

64,323

社区成员

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

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