C++中默认构造函数中数据成员的初始化


构造函数的任务是初始化数据成员的,在类中,如果没有显示定义任何构造函数,编译器将为我们创建一个构造函数,称为合成的默认构造函数,合成的默认构造函数使用与变量初始化相同的规则来初始化成员。即当类中的数据成员没有在构造函数中显示初始化,将执行默认初始化

1.对于内置类型(如int,double,char,bool等)和复合类型(数组,指针),定义任何函数体之外的内置类型或复合类型变量将被初始化0,对于函数体内的内置类型的对象,若没有初始化,其值是未定义的。

2.具有类类型的成员通过运行各自的默认构造函数来进行初始化。

 1 #include <iostream>
 2 #include <cstdlib>
 3 #include <string>
 4 
 5 using namespace std;
 6 
 7 class test{
 8 public:
 9     bool a;
10     int b;
11     float c;
12     string s;
13     int *d;
14     int e[3];
15 };
16 test global_a;  //定义在函数之外
17 int main()
18 {
19     test local_a;  //定义在函数之内
20     system("pause");
21     return 0;
22 }

如上可以,定义在函数体之内的内置类型和复合类型,其值均是未定义的,随机的,而对于类类型string,自动执行其构造函数,初始化为空。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM