C++ 派生类赋值运算符应显式调用
struct Base
{
double x{ 111.1 };
};
struct Derive :public Base
{
double y{ 222.2 };
Derive& operator=(const Derive& obj)
{
if (&obj == this)
{
return *this;
}
Base::operator=(obj); // 显示调用基类operator=
// 酌情处理自赋值的问题
y = obj.y;
return *this;
}
};
int main()
{
Derive d;
d.x = 1.1;
d.y = 2.2;
Derive d1;
d1.x = 3.3;
d1.y = 5.5;
d = d1;
cout << d.x << '\n'; // 若不显示调用基类operator=,还是1.1
cout << d.y << '\n'; //
system("pause");
return EXIT_SUCCESS;
}
输出:
3.3
5.5
参考:《C++ Primer》 P555
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了