C++中默认构造函数中数据成员的初始化
2017-11-19 11:32
267 查看
原文地址:http://www.cnblogs.com/coding-wtf/p/5786854.html
构造函数的任务是初始化数据成员的,在类中,如果没有显示定义任何构造函数,编译器将为我们创建一个构造函数,称为合成的默认构造函数,合成的默认构造函数使用与变量初始化相同的规则来初始化成员。即当类中的数据成员没有在构造函数中显示初始化,将执行默认初始化:
1.对于内置类型(如int,double,char,bool等)和复合类型(数组,指针),定义任何函数体之外的内置类型或复合类型变量将被初始化0,对于函数体内的内置类型的对象,若没有初始化,其值是未定义的。
2.具有类类型的成员通过运行各自的默认构造函数来进行初始化。
如上可以,定义在函数体之内的内置类型和复合类型,其值均是未定义的,随机的,而对于类类型string,自动执行其构造函数,初始化为空。
构造函数的任务是初始化数据成员的,在类中,如果没有显示定义任何构造函数,编译器将为我们创建一个构造函数,称为合成的默认构造函数,合成的默认构造函数使用与变量初始化相同的规则来初始化成员。即当类中的数据成员没有在构造函数中显示初始化,将执行默认初始化:
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,自动执行其构造函数,初始化为空。
相关文章推荐
- C++ 怎么在默认构造函数的初始化列表中初始化指针或者引用类型数据成员
- C++中默认构造函数中数据成员的初始化
- C++ 初始化类的三个数据成员
- C++构造与析构(7) - 数据成员的初始化
- 关于C++ 类数据成员初始化的一点总结【为什么类定义中不能初始化成员变量】
- C++中用成员初始化值初始化类的const数据成员
- C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员
- C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员
- C++静态整型成员数据在类内初始化
- C++ 初始化类的三个数据成员
- C++特殊数据类型成员变量的初始化
- C++必须使用【初始化列表】初始化数据成员的三种情况
- C++ 12.4.5 类成员的显示初始化----数据成员都是public类型且没有构造函数的类
- C++回顾之类数据成员的初始化
- C++类使用默认构造函数时各数据成员的初始化
- C++静态成员数据—定义、初始化
- C++ 初始化类的三个数据成员
- C++ 初始化类的三个数据成员
- how to initialize Static data member in C++ (怎样初始化类的static数据成员)
- C++学习笔记17,构造函数体内初始化数据成员与构造函数初始化器的区别(一)