讨论:基类的构造函数不能被子类继承?

ff5dq4 2006-04-25 01:27:26

但为什么 可以在子类中 调用父类的构造函数 连 :: 符号都不用加
这不是继承下来了吗?
...全文
452 13 点赞 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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++ 语言
加入

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2006-04-25 01:27
社区公告
暂无公告