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()

posted @ 2021-09-06 10:21  Creature_lurk  阅读(28)  评论(0编辑  收藏  举报