C++第06课 重载后续
1.**默认的赋值重载**
class MM { public: MM() {} MM(string name, int age) :name(name), age(age) {} MM(const MM& obj) { this->name = obj.name; this->age = obj.age; cout << "拷贝构造" << endl; } protected: string name="张三"; int age=18; }; void print(MM obj) { } MM returnObj(MM& obj) { return obj; } int main() { MM mm1; MM mm2; mm2 = mm1; //调用默认=重载 MM mm3 = mm2; //调用拷贝构造 print(mm3); //调用拷贝构造 returnObj(mm3);//调用拷贝构造 return 0; }
2.**重载与常量**
class Num { friend Num operator+(int data, Num obj); public: Num(int num = 0) :num(num) {} Num operator+(int data) { return Num(this->num + data); } protected: int num; }; Num operator+(int data, Num obj) { return Num(data + obj.num); } int main() { Num a; Num b(101); Num c = a + 1; Num d = 1 + b; //这一种只能采用友元重载 return 0; }
3.**迭代器**:对象模仿指针的行为, 迭代器本身是一个类中类的对象
begin() end()