大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
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<iostream>
#include<string>
class student{
private:
int id;//id这个名称称为accessor存取器或mutator变值器。
public:
int getId();//accessor function,是只读性质的函数
void setId(int id);//mutator function,是只写性质的函数
};
函数形参与类私有成员重名的解决方法
#include<iostream>
class retangle{
private:
double width;
double height;
public:
void setWidth(double width);
void setHeight(double height);
};
-按照一般做法,我们会这样来实现这两个set函数:
#include<iostream>
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<iostream>
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,而不是传进去的参数,从而不会引起混淆。
-
当然了,这种设形参的方法本来就不太好,如果不是题目要求而是自己编程的时候应该尽量避免使用。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197829.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...