C++中继承情况下的构造函数
来源:互联网 发布:通达数据库管理软件 编辑:程序博客网 时间:2024/05/22 00:30
如果需要向基类构造函数传递实参,需要将基类包含在派生类的构造函数初始化列表中。如下:
#include <iostream>
using namespace std;
class Base
{
private:
int value;
public:
Base(int i = 0) : value(i)
{
cout << "con in base. value is " << value << endl;
}
};
class Derived : public Base
{
private:
int value;
public:
Derived(int i = 1) : value(i), Base(i)
{
cout << "con in derived. value is " << value << endl;
}
};
int main()
{
Derived a;
}
上面的程序的输出结果为:
con in base. value is 1
con in derived. value is 1
若将程序改写成:
#include <iostream>
using namespace std;
class Base
{
private:
int value;
public:
Base(int i = 0) : value(i)
{
cout << "con in base. value is " << value << endl;
}
};
class Derived : public Base
{
private:
int value;
public:
Derived(int i = 1) : value(i) //, Base(i)
{
cout << "con in derived. value is " << value << endl;
}
};
int main()
{
Derived a;
}
则输出结果为:
con in base. value is 0
con in derived. value is 1
若进一步讲程序改写成:
#include <iostream>
using namespace std;
class Base
{
private:
int value;
public:
Base(int i) : value(i)
{
cout << "con in base. value is " << value << endl;
}
};
class Derived : public Base
{
private:
int value;
public:
Derived(int i = 1) : value(i)//, Base(i)
{
cout << "con in derived. value is " << value << endl;
}
};
int main()
{
Derived a;
}
则程序编译时会报错:
error: no matching function for call to 'Base::Base()'
因为派生类的构造函数会调用基类的默认构造函数,而在上面的代码中Base类没有定义默认构造函数,故报错。
- C++中继承情况下的构造函数
- 继承下的构造函数
- c++中六种构造函数的实现以及9中情况下,构造函数的调用过程
- C#静态构造函数,在继承中调用情况
- java中继承类有参构造函数加载情况
- 5.1 无继承情况下的对象构造
- 继承机制下的构造函数
- 继承下构造函数的执行顺序
- C++中虚函数的理解,以及简单继承情况下的虚函数的表!
- 构造函数在类的继承中
- java 中 构造函数的继承
- java继承中构造函数的特点
- java继承中构造函数的调用
- 【C++】构造拷贝构造的 N 中调用情况
- C#继承|继承中构造函数的调用
- 构造函数的继承
- 继承的构造函数
- 构造函数的继承
- 【jQuery插件】flexigrid
- linux下的screen工具配置(针对 string escape)
- c#动画设计初探(CompositionTarget与DispatcherTimer)
- Git Distributed Workflows
- 第一次铁幕解答及OPENGL的入门
- C++中继承情况下的构造函数
- nand flash的读操作
- OpenCV 的 canny掃描實驗
- 填充窗口颜色
- 贝叶斯定理及典型应用
- WMI错误
- 项目经理知道该何时全身而退
- memset() 函数详解(标记备忘)
- 在jsp中使用JDBC来连接MySQL数据库