【发布时间】:2015-06-09 10:21:00
【问题描述】:
构造函数与其他类方法的不同之处在于它们创建新对象,而其他方法由现有对象调用。这是构造函数不被继承的原因之一。继承意味着派生对象可以使用基类方法,但在构造函数的情况下,对象在构造函数完成工作之前不存在。
构造函数是创建新对象还是在调用对象时 立即调用构造函数?
据说构造函数和析构函数不被继承 从基类到派生类但是是下面的程序 矛盾的是,我们正在创建派生类的对象,但它 还输出基类的构造函数和析构函数?
class A{
public:
A(){
cout<< Const A called<<endl;
}
~A(){
cout<< Dest A called <<endl;
}
};
Class B : public A{
public:
B(){
cout<< Const B called <<endl;
}
~B(){
cout<< Dest B called <<endl;
}
};
int main(){
B obj;
return 0;
}
输出:
调用常量 A
调用常量 B
目标 B 调用
目标 A 调用
【问题讨论】:
-
在
A中定义带参数的构造函数,然后看看B是否继承了带参数的构造函数。 -
那是一个非常具有误导性的帖子,基于一本非常具有误导性的引述,该引述来自一本没有被高度重视为 C++ 知识来源的书。您应该简单地忽略所有这些。派生类从其基类继承所有成员。
-
C++11及以后支持构造函数继承,所以前提不正确。
标签: c++ inheritance constructor