如何在子类中向父类的构造函数传递参数
来源:互联网 发布:联通多号通软件 编辑:程序博客网 时间:2024/05/19 16:06
例2-13
#include <iostream.h>
class animal
{
public:
animal(int height, int weight)
{
cout<<"animal construct"<<endl;
}
~animal()
{
cout<<"animal destruct"<<endl;
}
void eat()
{
cout<<"animal eat"<<endl;
}
void sleep()
{
cout<<"animal sleep"<<endl;
}
void breathe()
{
cout<<"animal breathe"<<endl;
}
};
class fish:public animal
{
public:
fish()
{
cout<<"fish construct"<<endl;
}
~fish()
{
cout<<"fish destruct"<<endl;
}
};
void main()
{
fish fh;
}
当我们编译这个程序时,就会出现如下错误:
那么这个错误是如何出现的呢?当我们构造fish类的对象fh时,它需要先构造animal类的对象,调用animal类的默认构造函数(即不带参数的构造函数),而在我们的程序中,animal类只有一个带参数的构造函数,在编译时,因找不到animal类的默认构造函数而出错。
因此,在构造fish类的对象时(调用fish类的构造函数时),要想办法去调用animal类的带参数的构造函数,那么,我们如何在子类中向父类的构造函数传递参数呢?可以采用如例2-14所示的方式,在构造子类时,显式地去调用父类的带参数的构造函数。
例2-14
#include <iostream.h>
class animal
{
public:
animal(int height, int weight)
{
cout<<"animal construct"<<endl;
}
…
};
class fish:public animal
{
public:
fish(int _a):animal(400,300),a(_a)
{
cout<<"fish construct"<<endl;
}
private:
int a;
};
void main()
{
fish fh;
}
注意程序中以粗体显示的代码。在fish类的构造函数后,加一个冒号(:),然后加上父类的带参数的构造函数。这样,在子类的构造函数被调用时,系统就会去调用父类的带参数的构造函数去构造对象。这种初始化方式,还常用来对类中的常量(const)成员进行初始化,如下面的代码所示:
class point
{
public:
point():x(0),y(0)
private:
const int x;
const int y;
};
当然,类中普通的成员变量也可以采取此种方式进行初始化,然而,这就没有必要了。
- 如何在子类中向父类的构造函数传递参数
- c++ 在子类中向父类的构造函数传递参数的小例子.包括类中常量的初始化
- [C++基础]在子类中向父类的构造函数传递参数的小例子,包括类中常量的初始化
- 在子类中调用父类的带参数的构造函数
- 在子类中调用父类的带参数的构造函数
- 在子类中调用父类的带参数的构造函数
- 子类传递参数给它的父类的构造函数
- 向基类构造函数传递参数
- 向基类构造函数传递参数
- C++类构造函数初始化列表,子类向父类传参数
- C++类构造函数初始化列表,子类向父类传参数
- 子类构造函数参数列表,子类向父类传参数
- 子类传递参数到多个基类构造函数
- 在子类中调用父类的带参数的构造方法
- Java中,关于在子类构造函数中调用父类构造函数完成对象创建的简单分析
- C++学习 向基类构造函数传递参数
- 【c++程序】向基类构造函数传递参数
- java基础:在子类的构造函数中为什么必须调用父类的构造函数(与转型)
- IIS无法启动故障分析
- memcpy
- 开源,选择Google Code还是Sourceforge?
- android could not find *.apk or Debug certificate
- 毕业后的五年拉开大家差距的原因
- 如何在子类中向父类的构造函数传递参数
- 四年程序员职业生涯一点感悟
- D-LINK DI-624及DI-624+A路由器端口映射eMule设置HighID方法
- 主线程等待子线程结束(多线程结束标识)
- C++ 标准库中函数所对应的头文件
- MM常用表
- php调试不要被浏览器蒙蔽了眼睛
- wince添加telnet server
- “云时代”的信息安全