博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++构造与析构(9) - 默认构造函数
阅读量:4070 次
发布时间:2019-05-25

本文共 976 字,大约阅读时间需要 3 分钟。

如果一个构造函数没有任何参数,或者每个参数都带有默认值,则可称为默认构造函数。

如果没有自定义默认构造函数,则编译器会隐式地创建一个默认构造函数, 当需要使用时,就会进行定义。编译器定义的默认构造函数用来对类内部进行某种程度的初始化。它不会修改数据成员或者普通数据类型(例如数组,结构体等)。但是编译器会根据需要为默认构造函数生成代码。

当一个子类的基类拥有默认构造函数,或某个类中的成员对象拥有默认构造函数。则编译器必须生成一定的代码,来调用基类/嵌入类的默认构造函数。

#include 
using namespace std; class Base{public: // 编译器自动声明构造函数}; class A{public: // 用户自定义构造函数 A() { cout <<"A Constructor" << endl; } int size;}; class B : public A{ // 编译器会自定义B的默认构造函数, 并且生成代码来调用A的构造函数 // 注意:编译器不会初始化A的任何成员}; class C : public A{public: C() { // 用户自定义C的构造函数,编译器会生成代码来调用A的构造函数 cout <<"C Constructor" << endl; //注意:编译器不会初始化A的任何成员 }}; class D{public: D() { // 用户自定义D的构造函数 // 创建成员a时,编译器会生成代码来调用A的构造函数 cout <<"D Constructor" << endl; //注意:编译器不会初始化'a'的任何成员 } private: A a;}; int main(){ Base base; B b; C c; D d; return 0;}

输出:

A Constructor
A Constructor
C Constructor
A Constructor
D Constructor

转载地址:http://aqeji.baihongyu.com/

你可能感兴趣的文章
PCA人脸识别过程
查看>>
再议PCA
查看>>
奇异值、奇异矩阵、SVD分解、正交矩阵
查看>>
向量的范数以及矩阵的范数
查看>>
Memo
查看>>
奇异值分解和特征值分解的一些备注
查看>>
PCA、最小平方差等中用拉格朗日求极值时对常见的一个f(x)=X'A'AX求导的证明
查看>>
PCA中的数据矩阵的一个备忘
查看>>
计算协方差矩阵的一个备忘
查看>>
Matlab使用PCA来做人脸识别的过程
查看>>
eclipse开发php全过程的搭建带debug的配置
查看>>
一种按照顺序提取向量中非0元素的方法
查看>>
DWZ中修改tree可以自定义节点的图标
查看>>
概率论与数理统计:随机变量、分布律,分布函数,密度函数
查看>>
统计学习方法备忘1
查看>>
X=XZ中Z有无穷解的解释
查看>>
Zend Studio7中的debug
查看>>
ZenFramework中的View对象初始化流程
查看>>
对偶空间
查看>>
稀疏表达唯一解的证明
查看>>