怎样可以不做任何处理就可以在继承类中自动使用基类构造函数?

zyq_123 2012-01-07 05:07:02
RT
...全文
88 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyq_123 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 taodm 的回复:]
楼主到底学过C++没有?提的问题很有开放性思维啊。
[/Quote]

急什么急啊?!我学过没学过C++与本贴内容无直接关系,请自重!
taodm 2012-01-07
  • 打赏
  • 举报
回复
楼主到底学过C++没有?提的问题很有开放性思维啊。
zyq_123 2012-01-07
  • 打赏
  • 举报
回复
其他函数(非构造函数)能不能像“CInherit() : CBase()”这样处理?
zyq_123 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pathuang68 的回复:]
引用 4 楼 zyq_123 的回复:

引用 3 楼 arfi 的回复:
如上方法可以做到

CInherit() : CBase()


怎样定义和实现?代码片断。再之,是不是一级套一级的执行的?


1. 在构造派生类的对象时,会调用基类的构造函数
2. 用CInherit() : CBase(...)方法可以调用指定的基类构造函数
3. 是一级套一级执行的
[/Quote]

带相同参数的基类、继承类的构造函数,在执行基类构造函数时所使用的参数是不是直接得到继承类构造函数传入的参数?
pathuang68 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zyq_123 的回复:]

引用 3 楼 arfi 的回复:
如上方法可以做到

CInherit() : CBase()


怎样定义和实现?代码片断。再之,是不是一级套一级的执行的?
[/Quote]

1. 在构造派生类的对象时,会调用基类的构造函数
2. 用CInherit() : CBase(...)方法可以调用指定的基类构造函数
3. 是一级套一级执行的
zyq_123 2012-01-07
  • 打赏
  • 举报
回复
arfi:
你03年注册的?你那里的?
zyq_123 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 arfi 的回复:]
不用,代码就是所列的那个呀,在调用CInherit构造函数之前先调用基类CBase的构造函数
CInherit() : CBase()
{
printf("CInherit::CInherit()\n");
}

你可以在main函数定义一个 CInherit 变量试一下,两个构造函数都调用到了(先调用基类的)
[/Quote]

“在调用CInherit构造函数之前先调用基类CBase的构造函数”明白。
arfi 2012-01-07
  • 打赏
  • 举报
回复
不用,代码就是所列的那个呀,在调用CInherit构造函数之前先调用基类CBase的构造函数
CInherit() : CBase()
{
printf("CInherit::CInherit()\n");
}

你可以在main函数定义一个 CInherit 变量试一下,两个构造函数都调用到了(先调用基类的)
zyq_123 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 arfi 的回复:]
如上方法可以做到

CInherit() : CBase()
[/Quote]

怎样定义和实现?代码片断。再之,是不是一级套一级的执行的?
arfi 2012-01-07
  • 打赏
  • 举报
回复
如上方法可以做到

CInherit() : CBase()
zyq_123 2012-01-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 arfi 的回复:]
没太明白,这样满足要求么

C/C++ code

class CBase
{
public:
CBase()
{
printf("CBase::CBase()\n");
}
};

class CInherit : public CBase
{
public:
CInherit() : CBase()
{……
[/Quote]

就是定义CInherit()方法,就在CInherit构造时自动执行CBase()方法。
arfi 2012-01-07
  • 打赏
  • 举报
回复
没太明白,这样满足要求么
class CBase
{
public:
CBase()
{
printf("CBase::CBase()\n");
}
};

class CInherit : public CBase
{
public:
CInherit() : CBase()
{
printf("CInherit::CInherit()\n");
}
};

64,654

社区成员

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

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