社区
C++ 语言
帖子详情
讨论:基类的构造函数不能被子类继承?
ff5dq4
2006-04-25 01:27:26
但为什么 可以在子类中 调用父类的构造函数 连 :: 符号都不用加
这不是继承下来了吗?
...全文
506
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++ 面向对象三大特性:
继承
19.1
基类
与派生类当创建一个新类时,并不一定要从零开始编写所有的数据成员和成员函数。如果这个类与其他的类有很强的联系,比如已有一个猫类了,再想写一个加菲猫类,只需要让新类去
继承
已有...
c++11之
继承
构造函数
的理解
一、理解:
继承
构造函数
,
继承
...基于
基类
构造函数
的声明,在
子类
构造同样的声明,只是函数名不一致罢了。这就导致一个问题,如果多
基类
中,
构造函数
声明是一致的,那么将导致
子类
重复构造。怎么解决此问题呢?...
C++实验在
基类
的
构造函数
中调用被
子类
重载的虚函数
例如,ClassB
继承
自ClassA,且重载了
基类
的一个函数,则被调用时将会触发重载的版本: #include<iostream> using namespace std; class ClassA { public: virtual void TestFunc() { cout << ...
using在
继承
构造函数
中的用法(c++11)
首先
基类
的
构造函数
和析构函数是
不能
被
子类
所
继承
的,之所以叫
继承
构造函数
,实则含义是
子类
继承
父类后,
子类
的
构造函数
所调用父类
构造函数
的一种方式。
子类
为完成
基类
初始化(
基类
中没有默认的无参
构造函数
的情况...
C++
继承
(1) -
基类
哪些数据会被
子类
继承
下来?
C++
继承
(1) -
基类
哪些数据会被
子类
继承
下来
C++ 语言
64,282
社区成员
250,470
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章