1 概述
定义即初始化,说的是变量再定义时就初始值。这在C语言中可以增加代码可读性,在C++可以提供代码执行效率。
2 实例
2.1 定义时不初始化
Array getArray(int n)
{
Array a(n);
a.setValue(3, 10);
return a;
}
int main(int argc, char *argv[])
{
Array a;
a = getArray(10);
std::cout << a << std::endl;
return 0;
}
运行结果:
Array(int)
Array(int)
operator=(Array &&)
~Array()
0 0 0 10 0 0 0 0 0 0
~Array()
运行结果分析:
- 代码Array a;调用一次构造函数
- getArray函数内部调用一次构造函数
- 赋值语句调用移动赋值操作符
2.2 定义时初始化
Array getArray(int n)
{
Array a(n);
a.setValue(3, 10);
return a;
}
int main(int argc, char *argv[])
{
Array a = getArray(10);
std::cout << a << std::endl;
return 0;
}
运行结果:
Array(int)
0 0 0 10 0 0 0 0 0 0
~Array()
运行结果分析:
- 编译器有返回值优化,只调用了一次构造函数,效率是不是提高了
- 定义即初始化利用编译器优化,节省了一次构造调用和赋值操作。