社区
C++ 语言
帖子详情
讨论:基类的构造函数不能被子类继承?
ff5dq4
2006-04-25 01:27:26
但为什么 可以在子类中 调用父类的构造函数 连 :: 符号都不用加
这不是继承下来了吗?
...全文
526
13
打赏
收藏
讨论:基类的构造函数不能被子类继承?
但为什么 可以在子类中 调用父类的构造函数 连 :: 符号都不用加 这不是继承下来了吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
BluntBlade
2006-04-25
打赏
举报
回复
不是继承关系。
子类只是调用父类的构造函数去初始化子类实例中的“父类子部分”。
code_tin
2006-04-25
打赏
举报
回复
不能.有一定的理由.原因可以看D&E
ff5dq4
2006-04-25
打赏
举报
回复
如果不能继承 哪请问为什么 子类还能够使用父类的构造函数 不能继承意味我们不能在
子类函数中 使用 父类构造函数把
#include <cstdlib>
#include <iostream>
using namespace std;
class A
{
int a;
static int b;
public:
A(int _a){a=_a;}
A(){}
};
class B:public A
{
public:
void C(){A classA=A(6);} //在B作用域中 A()是可见的
};
main()
{
B b;
b.C();
system("pause");
}
zengkun100
2006-04-25
打赏
举报
回复
构造函数也可以继承吗?能调用,不代表就是继承啊!
类A既然有公有的构造函数,为什么不能调用?什么叫可见?不要搞茴香豆的游戏了。
void C(){A classA=A(6);} //在B作用域中 A()是可见的 ——这句话就太搞笑了。在哪里不都可以这样写?
sankt
2006-04-25
打赏
举报
回复
建议提交成faq
sankt
2006-04-25
打赏
举报
回复
我认为不能被子类继承,
为了把一个或多个实参传递给成员类对象的构造函数我们通过成员初始化表来实现
1 基类构造函数如果有多个基类则构造函数的调用顺序是某类在类派生表中出现的
顺序而不是它们在成员初始化表中的顺序.
2 成员类对象构造函数如果有多个成员类对象则构造函数的调用顺序是对象在类中
被声明的顺序而不是它们出现在成员初始化表中的顺序
3 派生类构造函数
作为一般规则派生类构造函数应该不能直接向一个基类数据成员赋值而是把值传递
给适当的基类构造函数否则两个类的实现变成紧耦合的tightly coupled 将更加难于
正确地修改或扩展基类的实现基类设计者的责任是提供一组适当的基类构造函数
sankt
2006-04-25
打赏
举报
回复
这个帖子有点意思
潜力帖
goodchan
2006-04-25
打赏
举报
回复
回复人:Jinhao(辣子鸡丁·GAME就这样OVER了) ( 两星(中级)) 信誉:93 2006-04-25 01:29:00 得分:0
如果不继承。那子类怎么去初始化基类部分?
----------------------------------------------------
这个是通过成员初始化列表来做的吧?
派生类初始化基类部分是基类的构造函数做的,但派生类并没有继承基类的构造函数。
它是通过派生类的构造函数把参数传递到基类的构造函数来完成的。
如果派生类的构造函数里的成员初始化列表没有写上基类的构造函数,那么它调用的将是基类的默认构造函数。
Jinhao
2006-04-25
打赏
举报
回复
..俺错了..不能继承..
好比operator= 和 friend function这些..都不能继承
class A
{
int i;
public:
A();
void fun();
};
class B: public A{};
上面的class A和class B。可以说 B有 i和fun。但不能说B有A::A(),因为B不能把A::A()强加于自己,它有自己的B::B()
CodenameBeta
2006-04-25
打赏
举报
回复
派生类不继承基类构造函数。
参考《C++ Primer 第三版 中文版》,Page 748
ff5dq4
2006-04-25
打赏
举报
回复
我觉得 只有 赋值操作符 不能继承
因为 这赋值操作符 会在子类 中 自动生成默认的 且与父类同名 所以 覆盖父类的 同名函数
就只能用 :: 来调用了
而即使 在子类不定义 构造函数和析构函数 但默认的构造函数 的名字和父类 构造函数名字不一样
所以不会被覆盖
ff5dq4
2006-04-25
打赏
举报
回复
书上写的 不能继承 但我想法和你一样可以继承的
Jinhao
2006-04-25
打赏
举报
回复
如果不继承。那子类怎么去初始化基类部分?
只是构造函数非常特殊
C++
继承
及派生类习题.pdf
.
一起学C#:类的
继承
.rar
对于类而言,所谓的
继承
就是
子类
包含父类的数据结构和行为方式,包括字段、属性、方法、事件。 在类的
继承
中,被
继承
的类叫
基类
或父类,
继承
的类叫派生类或
子类
。
C++上机实验报告.docx
...
cpp代码-C++:类01__
继承
cpp代码-C++:类01__
继承
Python实现
子类
调用父类方法
【源码免费下载链接】:https://renmaiwang.cn/s/35pu5 本文通过实例详细阐述了Python中
子类
调用父类方法的技术要点。供各位读者参考探讨。具体实现部分如下:在Python编程语言中,每个类都可以拥有一个或多个
基类
(parent class),这些
基类
为该类提供了许多标准属性和方法。当
子类
的实例执行某个方法或者访问某个属性时,如果该操作未被
子类
明确定义,则系统会自动从父类中查找相应的实现。值得注意的是,在这种情况下,如果一个
子类
同时拥有多个
基类
(如一个多层
继承
结构),仅仅依靠
子类
自身的初始化方法不足以覆盖所有可能的情况。在Python编程语言中,默认情况下,
构造函数
的调用顺序遵循特定规则:如果没有显式指明,则系统会按照从左到右的顺序依次调用各个
基类
的
构造函数
。这种机制确保了多
继承
场景下的属性初始化能够得到正确处理。然而,在某些特殊情况下(例如当某个
基类
的初始化依赖于另一个
基类
已经被成功执行完毕时),如果
子类
不显式调用父类的
构造函数
,其属性和初始状态可能会受到影响。为了避免这种情况的发生,建议在进行多层
继承
设计时充分考虑各
基类
之间的相互依赖关系,并采取相应的措施确保初始化过程的安全性和可靠性。
C++ 语言
65,203
社区成员
250,519
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章