Accessor and Mutator functions
----
Definition
Accessor and mutator functions (a.k.a. set and get functions) provide a direct way to change or just access private variables.
They must be written with the utmost care because they have to provide the protection of the data that gives meaning to a class in the first place. Remember the central theme of a class: data members are hidden in the private section, and can only be changed by the public member functions which dictate allowable changes.
某个变量只能通过公共方法来存取,这种变量叫做accessor或mutator。
accessor和mutator主要用来实现数据的封装,有了accessor和mutator,我们就可以将数据成员设为私有,所有对它们的读写操作都通过这两个函数来实现。
#include
#include
class student{
private:
int id;//id这个名称称为accessor存取器或mutator变值器。
public:
int getId();//accessor function,是只读性质的函数
void setId(int id);//mutator function,是只写性质的函数
};
函数形参与类私有成员重名的解决方法
----
#include
class retangle{
private:
double width;
double height;
public:
void setWidth(double width);
void setHeight(double height);
};
-按照一般做法,我们会这样来实现这两个set函数:
#include
class retangle{
private:
double width;
double height;
public:
void setWidth(double width) {
width = width;//error
return;
}
void setHeight(double height) {
height = height;//error
return;
}
};
但是我们会发现这样是行不通的,会出现编译错误,原因大概是,编译器把两个width和height都当成是传进函数的参数。
这个时候,我们就需要引入this指针来解决这个问题。
#include
class retangle{
private:
double width;
double height;
public:
void setWidth(double width) {
this->width = width;
return;
}
void setHeight(double height) {
this->height = height;
return;
}
};
通过引用this指针,可以明确复制号的左操作数是调用函数的对象里面的width和height,而不是传进去的参数,从而不会引起混淆。
当然了,这种设形参的方法本来就不太好,如果不是题目要求而是自己编程的时候应该尽量避免使用。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/129637.html