赞
踩
当对象在创建时获得了一个特定的值,我们就说这个对象被初始化了。
注意
:在C++语言中,初始化和赋值是两个完全不同的操作。
初始化:创建变量时
赋予其一个初始值。
赋值:把对象的当前值删除,并赋予一个新的值。
而在很多类中,初始化和赋值的区别事关底层效率问题:前者直接初始化数据成员,后者则先初始化再赋值。
在下面情况发生:
非静态变量
或者数组
时没有赋初值{
int var;
int arr[10];
}
class B {
int a = 1;
int b = 2;
};
class A {
B m_b;
};
简单来说,如果在变量初始化时没有指定初始值,则变量进行默认初始化,此时变量被赋予了默认值,默认值到底是什么由
变量类型
和变量的位置
决定的,我们后面会具体讲解
值初始化是只使用了初始化器(即使用了圆括号或花括号)但却没有提供初始值的情况。
int main()
{
int *p = new int();//值初始化
vector<int> vec(10);//值初始化
//int a();错误的初始化方式
int a = int();//值初始化
return 0;
}
注意
:当不采用动态分配内存的方式(即不采用new运算符)时,写成int a();是错误的值初始化方式,因为这种方式声明了一个函数而不是进行值初始化。如果一定要进行值初始化,必须结合拷贝初始化使用,即写成int a=int();
class A {
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。