Effective C++ 条款12 赋值对象时勿忘其每一个成分

来源:互联网 发布:在淘宝进货实体店买 编辑:程序博客网 时间:2024/05/22 17:49

请记住:

赋值函数应该确保复制对象内的所有成员变量以及所有基类成分;

例如:

 

#include<iostream>using namespace std;class Base{public:Base(){}Base(int x,int y):ma(x),mb(y){}Base(const Base& rhs){ma=rhs.ma;mb=rhs.mb;}Base& operator=(const Base&rhs){if (this==&rhs)return *this;ma=rhs.ma;mb=rhs.mb;return *this;}virtual void print(){cout<<"ma= "<<ma<<endl;cout<<"mb= "<<mb<<endl;}private:int ma;int mb;};class Derived:public Base{public:Derived(){}Derived(int x,int y,int z,int k):Base(x,y),da(z),db(k){}Derived(const Derived& rhs):Base(rhs){da=rhs.da;db=rhs.db;}Derived& operator=(const Derived& rhs){if (this==&rhs)return *this;Base::operator =(rhs);da=rhs.da;db=rhs.db;return *this;}virtual void print(){Base::print();cout<<"da= "<<da<<endl;cout<<"db= "<<db<<endl;}private:int da;int db;};int main(){Base b(2,3);Derived d(1,2,3,4);b.print();d.print();Derived c=d;c.print();return 0;}


 

0 0
原创粉丝点击