#include <iostream> using namespace std; // 赋值操作符:引入的原因是1,类里面指针的混乱问题。用默认的赋值操作符会存在指针所指对像永久存在, // 但是析构的时候会删除另外一个指向同一对象的指针而导致内存泄漏的问题 // 其名字为 operator 后跟着所定义的操作符的符号。有一个返回值和一个形参表 return *this; // 第一个形参对应着左操作数,第二个形参对应右操作数。 // 赋值操作符接受单个形参,且该形参是同一类类型的对象。右操作数一般作为 const 引用传递。X& X::operator = (const X& x) // By Evel class A { public: //A(){} //默认构造函数 A(int a=0); //构造函数 A& operator=(const A& a); //声明形式 类名 operator=(const 类名& 形参名);如果是声明可以省略形参名字a。 //前面A&引用是需要返回指针 return *this;后面const表示不能改变形参本身a //一般使用const的时候同时会使用的是行参传引用或指针,因为是引用,所以为了防止值被修改,使用const void get(); private: int a1; double a2; //const char a3; }; void A::get() { cout << "利用赋值操作符函数将T1对象值赋值给T2: " << a2 << endl; } A::A(int a) { a1=a; a2=9; } A& A::operator =(const A& a) //赋值操作符函数定义 { a1=a.a1; a2=a.a2; return *this; //返回一个this指针。 } void main() { A T1(3),T2; T2=T1; //类的赋值操作函数调用。返回的this指针指向T2自己 T2.get(); //成员函数 }