C++当前运算符“=”未重载
本帖最后由 Pammer 于 2020-4-10 15:03 编辑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;
}
这儿为什么会显示当前运算符“=”未重载?
本帖最后由 我的爱是你 于 2020-4-10 14:39 编辑
重载没问题。
vs2019正常运行,应该是你编译器问题。
本帖最后由 Pammer 于 2020-4-10 14:45 编辑
我的爱是你 发表于 2020-4-10 14:37
重载没问题。
vs2019正常运行,应该是你编译器问题。
对着i=99中间的=右键,转到定义(我一直单步,单步不到operator=里) Pammer 发表于 2020-4-10 14:44
对着i=99中间的=右键,转到定义(我一直单步,单步不到operator=里)
为啥要对a i = 99 右键呢,你写的重载 i= 99 根本没有使用。
j = i 才使用了你的重载,a i =99 和 a j =i 都属于构造根本不会使用你的重载。 本帖最后由 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 15:14 编辑
好吧你所问的重载构造时的 = 号 难住我了,这相当于问我 1+1; 右键+ 号转到定义为啥没有重载一样。
我只能进行推测 其已在编译器内部早已定义,或者 如果能找到 class 微软源代码的话我或许可以对其回答。
我的爱是你 发表于 2020-4-10 14:55
预留文章
劳您费心了,我懂了,得重载折构函数 Pammer 发表于 2020-4-10 15:02
劳您费心了,我懂了,得重载折构函数
析构函数无法重载但可以多态。 我的爱是你 发表于 2020-4-10 15:15
析构函数无法重载但可以多态。
打错了,是构造函数(构造、析构分不清{:301_1004:})
页:
[1]