前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >c++私有变量和公有变量_没有与指定类型匹配的重载函数实例

c++私有变量和公有变量_没有与指定类型匹配的重载函数实例

作者头像
全栈程序员站长
发布2022-10-02 17:25:34
1.3K0
发布2022-10-02 17:25:34
举报

大家好,又见面了,我是你们的朋友全栈君。

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,我们就可以将数据成员设为私有,所有对它们的读写操作都通过这两个函数来实现。
代码语言:javascript
复制
#include<iostream>
#include<string>

class student{ 
   
private:
     int id;//id这个名称称为accessor存取器或mutator变值器。
public:
     int getId();//accessor function,是只读性质的函数
     void setId(int id);//mutator function,是只写性质的函数
};

函数形参与类私有成员重名的解决方法


代码语言:javascript
复制
#include<iostream>

class retangle{
private:
    double width;
    double height;
public:
    void setWidth(double width);
    void setHeight(double height);
};

-按照一般做法,我们会这样来实现这两个set函数:

代码语言:javascript
复制
#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指针来解决这个问题。
代码语言:javascript
复制
#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,而不是传进去的参数,从而不会引起混淆。
  • 当然了,这种设形参的方法本来就不太好,如果不是题目要求而是自己编程的时候应该尽量避免使用。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197829.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022年9月3日 上,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Accessor and Mutator functions
    • Definition
    • 函数形参与类私有成员重名的解决方法
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档