构造函数
来源:互联网 发布:ubuntu 输入法 安装 编辑:程序博客网 时间:2024/06/05 18:15
1)构造函数与类同名。
除了名字外,构造函数的另一个特别之处是没有返回值类型,这与返回值类型为void的函数不同。
如果它有返回值类型,那么编译器将不知所措。
----- 默认构造函数
1. 假如我们不提供一个构造函数,系统会自动创建一个构造函数,该函数不带参数,也不执行任何功能,它的作用只是构造一个对象。
2. 一旦我们创建了一个构造函数,那么那个默认的构造函数就会被自动屏蔽,构造对象时会调用我们创建的这个。
3. 我们可以创建多个构造函数,可以创建不带参数的,也可以创建带参数的,构造函数可以重载。
2)静态构造函数
实现对一个类进行初始化的方法成员。它一般用于对静态数据的初始化。
静态构造函数不能有参数,不能有修饰符而且不能被调用,当类被加载时,类的静态构造函数自动被调用。
注意静态构造函数只能对静态数据成员进行初始化,而不能对非静态数据成员进行初始化。
但是,非静态构造函数既可以对静态数据成员赋值,也可以对非静态数据成员进行初始化。
3)基类和派生类的构造函数
派生类对象的初始化由基类和派生类共同完成: 基类的成员由基类的构造函数初始化,派生类的成员由派生类的构造函数初始化。
当创建派生类的对象时,系统将会调用基类的构造函数和派生类的构造函数,
构造函数的执行次序是:先执行基类的构造函数,再执行派生类的构造函数。
如果派生类又有对象成员,则先执行基类的构造函数,再执行成员对象类的构造函数,最后执行派生类的构造函数。
至于执行基类的什么构造函数,缺省情况下是执行基类的无参构造函数,如果要执行基类的有参构造函数,则必须在派生类构造函数的成员初始化表中指出.
class A{ public:A(){x=0;cout<<"Default Constructor A."<<endl;}A(int i){x=i;cout<<"One Parameter Constructor A"<<endl;}private:int x;};class B : A{ public:B(){y=0;cout<<"Default Constructor B."<<endl;}B(int j){y=j;cout<<"One Parameter Constructor B."<<endl;}B(int i,int j):A(i){y=j;cout<<"Two Parameter Constructor B."<<endl;}private:int y;};int main(){B b1 = B();//执行基类A的构造函数A(),再执行派生类的构造函数B()cout<<endl;B b2 = B(5); //执行基类A的构造函数A(),再执行派生类的构造函数B(int)cout<<endl;B b3 = B(5,10); //执行执行基类A的构造函数A(int) ,再执行派生类的B(int i,int j):A(i)system("pause");return 0;}
输出结果:
如果基类A中没有提供无参构造函数public A( ) { x = 0; },则在派生类的所有构造函数成员初始化表中必须指出基类A的有参构造函数A(i),如下所示:
class A{ public:A(int i){x=i;cout<<"One Parameter Constructor A"<<endl;}private:int x;};class B : A{ public:B(int i):A(i){y=0;cout<<"One Parameter Constructor B."<<endl;}B(int i,int j):A(i){y=j;cout<<"Two Parameter Constructor B."<<endl;}private:int y;};
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- 构造函数
- javascript的对象
- 设计模式
- 数据结构和二叉树操作的封装
- 网页特效小例子
- 2016春季练习——贪心
- 构造函数
- Apriori算法详解之【二、伪代码和例子】
- WinEdt 读取tex源文件由于编码不一致导致读取失败的问题
- 程序员如何优雅的挣零花钱?
- spring学习笔记(5)属性文件引入使用
- javaScript源生模态窗
- android 中样式修改关于shape 的相关问题
- Android Studio配置SVN版本控制工具及移除版本控制
- Android中Java和JavaScript交互