Copy Control 复制控制 (复制构造函数 copy constructor,析构函数 destructor, 赋值操作符 operator=

#include <iostream>

using namespace std;

class Point{
public:
    Point(int cx,int cy):x(cx),y(cy){
        pData=new int;
        *pData = 0;
    }
    Point(const Point& pt)  //copy constructor
    {
        x=pt.getX();
        this->y=pt.getY();
        pData=new int;
        *pData=pt.getData();
    }
    void to_str(){
        cout<<"x="<<x<<",y="<<y<<",*pData="<<*pData<<endl;
    }
    void setX(int x){
        this->x=x;
    }
    void setY(int y)
    {
        this->y=y;
    }
    void setData(int data)
    {
        *pData=data;
    }
    int getX() const
    {
        return x;
    }
    int  getY() const
    {
        return y;
    }
    int  getData() const
    {
        return *pData;
    }
    virtual ~ Point()
    {
        delete pData;
    }
private:
    int x,y,*pData;

};

int main()
{
    Point pt(1,2);
    pt.setData(123);
    pt.to_str();

    cout<<"Hello中国"<<endl;
    Point pt2(pt);
    pt2.setX(11);
    pt2.setY(22);
    pt2.setData(112233);

    pt.to_str();
    pt2.to_str();
    return 0;
}

  

关于数据成员是否设置get,set方法,参考 Google Cpp Style Guide

Access Control

link

Make data members private, and provide access to them through accessor functions as needed (for technical reasons, we allow data members of a test fixture class to be protected when using Google Test). Typically a variable would be called foo_ and the accessor function foo(). You may also want a mutator functionset_foo(). Exception: static const data members (typically called kFoo) need not be private.

The definitions of accessors are usually inlined in the header file.

See also Inheritance and Function Names.

http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Access_Control#Access_Control

原文地址:https://www.cnblogs.com/wucg/p/2438645.html