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

c++私有变量和公有变量_没有与指定类型匹配的重载函数实例AccessorandMutatorfunctions.函数形参与类私有成员重名时的解决方法

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新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,而不是传进去的参数,从而不会引起混淆。

  • 当然了,这种设形参的方法本来就不太好,如果不是题目要求而是自己编程的时候应该尽量避免使用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 流媒体服务器搭建_搭建流媒体服务器(1)

    java 流媒体服务器搭建_搭建流媒体服务器(1)一、前语本文纂写时间是2018年12月17日,所描述的软件WowzaMediaServer此时已经出了4或更高,但是2.2.2提供的功能已经是Goodenoughforme.如果发现4足够更好,后面文章也许会再续。本文试图描述一个在WindowsServer2012上安装了WowzaMediaServerv2.2.2流媒体服务的事件。最终会另服务器提供给外部适当的Server和…

    2022年5月16日
  • 球谐函数

    球谐函数

    2021年5月25日
  • java中遍历数组_java遍历object数组

    java中遍历数组_java遍历object数组遍历数组目录遍历数组三种方式:for循环遍历foreach语句遍历Arrays工具类中toString静态方法遍历Arrays.deepToString()与Arrays.toString()的区别Java中对Array数组的常用操作(了解即可)三种方式: for for-each, toString 题目描述给一个数组:intArr={{5,7,15},{8,4,11},{3,6,13}};for循环遍历通常遍历数组都是使用f

    2022年9月18日
  • python函数replace()替换字符串中某个字符

    python函数replace()替换字符串中某个字符replace()函数:str.replace(old,new)old——要被替换的原来的子字符串,new——替换后的新的子字符串s=’abc’print(s)s=s.replace(‘b’,’f’)print(s)如果再加一个参数,即str.replace(old,new,max)则是指替换不超过max次数(即被替换字符若出现max次则会执行max次替换命令,若出现次数小于max次,则会全部被替换)s=’abcabcabcabcabcabc’prin

    2022年6月7日
  • 初识visifire图表「建议收藏」

    初识visifire图表「建议收藏」   在使用过jschart之后,觉得对俺们中国人不是很友善,短时间内是不会支持中文,没法用,也就这样就认识了visifire图表,第一次浏览他的网站就被他的华丽迷上了。   从他的网站上download下来,压缩包里面已经包含了samples。   首先必须在自己的机器上面安装微软的siverlight控件,否则你是不能浏览图表的,这个好办,到微软的网站上下载就可以了。   安装好siv

    2022年7月21日
  • idea 2020 3.3 激活码_通用破解码

    idea 2020 3.3 激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号