- 我已经覆盖了默认的复制构造函数和赋值运算符,只打印而不返回任何东西。
- 然而,该类工作正常,即它被正确复制和分配。
- 如您所见,display()方法也被正确调用。(我期待崩溃或分段错误,因为复制构造函数和赋值运算符被覆盖并且什么都不做。
- 我已经用不同的编译器(包括在线编译器)编译了相同的内容,但输出仍然保持不变。
我的问题:为什么类工作正常?不显示任何错误?我期待它崩溃或出现故障,例如输出垃圾值。
'
class Pizza
{
public:
Pizza(std::string string) { std::cout << "Ctor :" << string << std::endl; }
~Pizza() { std::cout << "Dtor" << std::endl; }
Pizza(const Pizza& rhs){ std::cout << "Copy Constructor" << std::endl; }
Pizza& operator=(const Pizza& rhs){ std::cout << "Assignment Operator" << std::endl;}
void display(){std::cout << "Display method is called on Pizza" << std::endl; }
};
int main()
{
Pizza pizza = Pizza("1");
Pizza tizza = pizza;
tizza = pizza;
pizza.display();
tizza.display();
}'
在 Windows 10 和其他编译器上使用 g++(Mingw 编译器)的代码的输出也是:
Ctor :1
Copy Constructor
Assignment Operator
Display method is called on Pizza
Display method is called on Pizza
Dtor
Dtor