ipk*_*iss 2 c++ assignment-operator
我有以下代码:
class Sales_item {
public:
int ii;
Sales_item& operator=(const Sales_item &item)
{
cout << "Inside assignment\n"; // Line 1
ii = item.ii;
return *this; // Line 2
}
};
Run Code Online (Sandbox Code Playgroud)
然后,我做了:(只是一个例子)
Sales_item s;
Sales_item s1 = s;
Run Code Online (Sandbox Code Playgroud)
但Line 1没有执行.如何在重载的赋值中"看到"代码才能执行?例如,可能有复杂的代码,我想调试?我试图在第1行设置断点,但程序没有跳到该断点.
为何Line 2回归*this?我试图改变void并获得相同的结果.有什么不同?
你正在初始化s1,而不是分配给它.
Sales_item s1 = s;
Run Code Online (Sandbox Code Playgroud)
调用编译器生成的复制构造函数.它相当于:
Sales_item s1(s);
Run Code Online (Sandbox Code Playgroud)
你需要:
Sales_item s1;
s1 = s;
Run Code Online (Sandbox Code Playgroud)
为何Line 2回归*this? - 这是实现赋值运算符的惯用方法,我建议你坚持下去.它便于方法和操作链接.
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |