一 概述
某些情况下,当我们编写一个类的时候,,并不需要为该类重载“=”运算符,因为编译系统为每个类提供了默认的赋值运算符“=”,使用这个默认的赋值运算符操作类对象时,该运算符会把这个类的所有数据成员都进行一次赋值操作
二 示例及结果输出
2.1 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| #include<iostream> using namespace std; class num { private: int *n; public: num() { n = new int; *n = 1; cout << "构造函数执行\n"; } num(const num &s) { n = new int; *n = s.get(); cout << "复制构造函数执行\n"; } ~num() { delete n; n = NULL; cout << "析构函数执行\n"; } int get() const {return *n;} void set(int x) {*n = x;} const num& operator=(const num &r) { if (this == &r) {return *this;} cout << "operator=函数在调用\n"; *n = r.get(); return *this; }
}; int main() { num one, two; one.set(1); num three; three = two = one; cout << three.get() << endl; return 0; }
|
2.2 输出结果
1 2 3 4 5 6 7 8
| 构造函数执行 构造函数执行 operator=函数在调用 operator=函数在调用 1 析构函数执行 析构函数执行 析构函数执行
|
2.3 代码说明