吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1761|回复: 8
收起左侧

[已解决] C++当前运算符“=”未重载

[复制链接]
Pammer 发表于 2020-4-10 14:16
本帖最后由 Pammer 于 2020-4-10 15:03 编辑

[C++] 纯文本查看 复制代码
class a
{
public:
        a(const int& arg);
        a& operator=(const a& arg);
        int value = 0;
private:
protected:
};

a& a::operator=(const a& arg)
{
        this->value = arg.value;
        return *this;
}

a::a(const int& arg)
{
        this->value = arg;
}

int main()
{
        a i = 0;
        a j = i;
}

这儿为什么会显示当前运算符“=”未重载?
捕获1.PNG

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

我的爱是你 发表于 2020-4-10 14:37
本帖最后由 我的爱是你 于 2020-4-10 14:39 编辑

重载没问题。
1.jpg vs2019正常运行,应该是你编译器问题。
 楼主| Pammer 发表于 2020-4-10 14:44
本帖最后由 Pammer 于 2020-4-10 14:45 编辑
我的爱是你 发表于 2020-4-10 14:37
重载没问题。
vs2019正常运行,应该是你编译器问题。

对着i=99中间的=右键,转到定义(我一直单步,单步不到operator=里)
我的爱是你 发表于 2020-4-10 14:48
Pammer 发表于 2020-4-10 14:44
对着i=99中间的=右键,转到定义(我一直单步,单步不到operator=里)

02.jpg
为啥要对a i = 99 右键呢,你写的重载 i= 99 根本没有使用。
j = i 才使用了你的重载,a i =99 和 a j =i 都属于构造根本不会使用你的重载。
 楼主| Pammer 发表于 2020-4-10 14:52
本帖最后由 Pammer 于 2020-4-10 14:54 编辑
我的爱是你 发表于 2020-4-10 14:48
为啥要对a i = 99 右键呢,你写的重载 i= 99 根本没有使用。
j = i 才使用了你的重载,a i =99 和 a  ...

懂了,但是怎样用 a j=i使用operator=
我的爱是你 发表于 2020-4-10 14:55
本帖最后由 我的爱是你 于 2020-4-10 15:14 编辑

好吧你所问的重载构造时的 = 号 难住我了,这相当于问我 1+1; 右键+ 号转到定义为啥没有重载一样。
我只能进行推测 其已在编译器内部早已定义,或者 如果能找到 class 微软源代码的话我或许可以对其回答。
 楼主| Pammer 发表于 2020-4-10 15:02

劳您费心了,我懂了,得重载折构函数
我的爱是你 发表于 2020-4-10 15:15
Pammer 发表于 2020-4-10 15:02
劳您费心了,我懂了,得重载折构函数

析构函数无法重载但可以多态。
 楼主| Pammer 发表于 2020-4-10 15:21
我的爱是你 发表于 2020-4-10 15:15
析构函数无法重载但可以多态。

打错了,是构造函数(构造、析构分不清
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 18:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表