sta*_*k92 1 c++ assignment-operator
我正在阅读一些c ++的赋值运算符理论.
让我们说吧
class MyClass {
private:
T1 member1;
T2 member2;
public:
// The default copy assignment operator which assigns an object via memberwise copy
MyClass & operator=(const MyClass & rhs) {
member1 = rhs.member1;
member2 = rhs.member2;
return *this;
}
......
}
Run Code Online (Sandbox Code Playgroud)
和
c7 = c6; //member wise copy assignment.
Run Code Online (Sandbox Code Playgroud)
这里我们在赋值操作期间返回对象的引用,并为其指定新对象c7.
但是,如果我的代码有点像这样:
int a=12;
int &b=a;
int c=&b; //error::invalid conversion from ‘int*’ to ‘int’
Run Code Online (Sandbox Code Playgroud)
为什么这与上述情况不同?
声明
int& b = a;
Run Code Online (Sandbox Code Playgroud)
声明b为引用,并使其引用变量a.
声明
int c = &b;
Run Code Online (Sandbox Code Playgroud)
声明c为普通int变量,然后尝试将其初始化为指向int.&符&根据上下文做不同的事情.
对于复制赋值运算符,在初始化声明中的变量时不会调用它,而是调用复制构造函数.
当你有一个拷贝赋值运算符,并且例如
MyClass a, b;
a = b; // Copy-assignment operator called
Run Code Online (Sandbox Code Playgroud)
编译器基本上用以下调用替换赋值
a.operator=(b);
Run Code Online (Sandbox Code Playgroud)
换句话说,它是一个普通的成员函数调用,就像任何其他函数一样.
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |