直接初试化,拷贝初试化,值初试化
列表初试化:用花括号初试化
直接初试化:将参数放在括号中初试化
拷贝初试化:用=或者将累的对象当做初试化的参数
值初试化:C++中用new开辟的空间通过在要初始化的空间的类型名后跟()来启用值初始化,而库类型则自动对未初始化的变量启用值初始化
1. 当变量为内置类型,值初始化用0来对其初始化。
2. 当变量为类类型,值初始化用该类的默认构造函数初始化。
3. 当变量为类类型且没有默认构造函数时,值初始化要求程序员提供初始化值。
默认情况下,动态分配的对象时默认初始化的,这意味着内置类型或组合类型的对象的值时未定义的,而类类型对象将默认构造函数进行初始化;也可以对动态分配的对象进行值初始化,只需在类型名之后跟一对空括号即可。
在合成的默认构造函数中,如果是类对象,那么调用这个对象的默认构造函数,如果是内置类型则未定义。
#include <iostream> using namespace std; class A{ public: private: A &operator=(const A&); int a; }; int main(int argc, char **argv) { A a, *pa = new A(); return 0; }
a={a=-6589} //没有给a初试化 *pa={a=0} //内置类型初试化为0