C++ 什么要有转换(改写用户代码)呢
1: 例子太多了。
The C++ Object model 里面2.3节,程序转换语义学中说了。
已知有这样的定义
X x0;
// 下面的函数
void _foo()
{
X x1(x0);
X x2 = x0;
X x3 = X(x0);
//Deal with x0 x1 x2 x3
}
_foo函数会被大致转换为
void _foo()
{
// 重新定义下面三个变量,删除初始化操作
X x1;
X x2;
X x3;
//编译器安插copy constructor 函数的调用操作
x1.X::X(x0);
x2.X::X(x0);
x3.X::X(x0);
}
程序的所有这些转换,难道都是基于要调用copy constructor 考虑的么?