C++赋值运算符
赋值运算符 =
用于将一个值赋给一个变量。对于自定义类型,如类和结构体,你可以重载赋值运算符以定义如何将一个对象的值赋给另一个对象。
默认赋值运算符
对于类类型,默认的赋值运算符会执行成员逐一赋值(member-wise copy)。这意味着对于两个对象a
和b
,表达式a = b;
将每个成员从b
复制到a
。
重载赋值运算符
重载赋值运算符通常有以下形式:
1 | ReturnType ClassName::operator=( const ClassName& other); |
ReturnType
通常是ClassName&
,表示赋值操作符返回对象的引用。ClassName
是你的类名。other
是作为参数传入的常量引用,表示要复制的对象。
1 2 3 4 5 6 7 8 9 10 11 12 | class Point { public : int x, y; Point& operator=( const Point& other) { if ( this != &other) { // 防止自赋值 x = other.x; // 成员逐一赋值 y = other.y; } return * this ; // 返回当前对象的引用 } }; |
单例模式中的赋值运算符
在单例模式中,你通常不希望单例对象被复制或赋值。因此,赋值运算符被声明为私有或被删除:
1 2 3 4 5 | class President { private : President& operator=( const President&); // 私有且未定义,防止赋值 // ... }; |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律