【问题标题】:Things that cannot be inherited不能继承的东西
【发布时间】:2012-06-12 04:22:17
【问题描述】:

我被要求说出三个不能从基类继承的东西。

除了私有成员函数,我还能添加什么?

我考虑过友元函数,但由于它们实际上不属于类,它们与继承无关。

【问题讨论】:

  • "名称以'n'开头的私有函数"、"名称以'o'开头的私有函数"和"名称不以'n'或'o'开头的私有函数": P
  • @R.MartinhoFernandes,你能详细说明一下吗?大声笑
  • @R.MartinhoFernandes: 不太明白...大声笑.. :)
  • 我认为构造函数是析构函数也不是继承...是我们需要单独调用基类版本的原因吗???
  • @anDroider 构造函数和析构函数可以被继承。

标签: c++ inheritance


【解决方案1】:

您通常关心的一些明显的东西是构造函数、赋值运算符和析构函数。

在所有这些情况下,特定于派生类的新版本要么由用户提供,要么由编译器合成(尽管 C++11 还添加了一些功能,例如简单地删除一个你没有想要)。

我可能应该补充一点,“不能被继承”不一定完全正确。例如,C++11 添加了继承构造函数(但它们不在 C++98/03 中,这是大多数课程仍在处理的内容)。即使在 C++11 中,您也不会默认继承它们。

【讨论】:

    【解决方案2】:

    私有成员变量和私有基。您也不能继承模板参数、COM __uuids 以及该类是否从 DLL 导出。

    赋值运算符不能被继承。

    【讨论】:

    • 我觉得你错了,私有成员变量是继承的,但是派生类不能直接访问。
    • @crazyffan:所以只需在前面添加“访问能力”即可。此外,我提供的还不止这些。#
    • @crazyfffan:嗯,我想是的,但只有白痴讲师会问这样的问题,所以谁知道呢?
    • @DeadMG:另外,我认为称讲师为白痴是不合理的。毫无疑问,关于继承的讲座(或其他课程材料)包括继承的事物的例子,以及不继承的事物。问题的目的是看学生是否学过课程材料,不是吗?程序员侮辱教育工作者是很常见的,因为教育工作者所做的事情不是编写盈利代码,但我认为这是错误的。只有在学生无法编写代码的情况下,才会侮辱教育工作者。这很频繁!
    • @DeadMG:这正是我的意思,批评教育工作者除了编写“实际代码”之外所做的任何事情。你认为给学生举一些继承或不继承的例子是在浪费学生的时间。我真的不明白你还能如何胜任地教别人 C++ 中的继承是做什么的。我想,从标准中读出所有相关的段落。我没有回答的原因不是我从来不需要知道这些,而是​​我认为 Jerry 的回答很好,而你的回答很有趣。我没有更多示例要添加。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 2012-06-06
    相关资源
    最近更新 更多