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

浙公网安备 33010602011771号