C++数据域封装

来源:互联网 发布:仿糗事百科源码 编辑:程序博客网 时间:2024/06/09 16:18

Data Field Encapsulation (数据域封装)

class Circle {            //数据域采用public的形式有两个问题public:                   //First,data may be tampered (数据会被类外的方法篡改)  double radius;          //Second,it makes the class difficult to maintain                           //and vulnerable to bugs  (库难于维护)  //....};//main  circle1.radius = 5;     //此处radius被篡改

改善
将 数据 改作私有

class Circle {private:                   //类中的函数依然可以访问这个数据  double radius;public:  Circle();  //.....}

【Accessor and Mutator(访问器和更改器)】【getter/setter 应该在类的public中】
To read/write private data,we need get/set function(为了读写私有数据,需要get/set function)
get function is referred to as a getter
set function is referred to as a setter

Signature of get function (General form)(get函数的一般原型)
returnType getPropertyName( )

Signature of get function (Bool type) (布尔型get函数的原型)
bool isPropertyName()

Signature of set function(set 函数的原型)
void setPropertyName(dataType propertyValue)

//Circle2.hclass Circle{public:    Circle();    Circle(double);    double getArea();    double getRadius();       //以让外部访问    void setRadius(double);   //以让外部改变private:    double radius_;}
//Circle2.cppdouble Circle::getRadius(){    return radius_;}void Circle::setRadius(double newRadius){    radius_ = (newRadius >= 0) ? newRadius : 0;}
0 0
原创粉丝点击