gpt4 book ai didi

c++ - C++ 中运算符重载的工作原理

转载 作者:太空宇宙 更新时间:2023-11-03 10:28:42 24 4
gpt4 key购买 nike

我正在研究一些 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;
}
......
}

c7 = c6; //member wise copy assignment.

在这里,我们在赋值操作期间返回对对象的引用,并为其分配新对象c7

但是如果我的代码有点像这样:

    int a=12;
int &b=a;
int c=&b; //error::invalid conversion from ‘int*’ to ‘int’

为什么这与上面的情况不同?

最佳答案

声明

int& b = a;

声明b为引用,并使其引用变量a

声明

int c = &b;

c 声明为普通的 int 变量,然后您尝试将其初始化为指向 int 的指针。符号 & 根据上下文做不同的事情。


至于复制赋值运算符,当您在​​声明中初始化变量时,不会调用它,而是调用复制构造函数。


当你有一个复制赋值运算符时,做例如

MyClass a, b;

a = b; // Copy-assignment operator called

编译器基本上用下面的调用替换了赋值

a.operator=(b);

换句话说,这是一个普通的成员函数调用,就像其他任何调用一样。

关于c++ - C++ 中运算符重载的工作原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24445784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com