如图片中的代码,打星星的那一行,如此操作是什么语法,代码也能正常运行
t = i;
那行实际上等价于t = Product(i);
由于用户没有为Product
定义拷贝赋值运算符,编译器会自动为其生成一个拷贝赋值运算符,默认拷贝赋值运算符是按成员拷贝赋值。
故t = Product(i);
就是用i的值调用Product::Product(int)
构造函数构建一个临时对象,然后调用编译器生成的Product::operator=(const Product&)
拷贝赋值运算符把临时对象赋值给t对象。