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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python整除和取余写法_Python的整除和取余[通俗易懂]

    python整除和取余写法_Python的整除和取余[通俗易懂]最近做题发现-123%10=7,于是查阅了一下python的取余机制,这里记录。参考:https://blog.csdn.net/sun___M/article/details/83142126//:向下取整int():向0取整正数的取余比较直接:print(123%10)#3这里结果为3。但是换为负数取余,情况就有所不同:print(-123%10)#7print(-123%-10)#-3…

    2022年5月25日
    88
  • 分布式事务saga_分布式事务代码例子

    分布式事务saga_分布式事务代码例子1.分布式事务  在前面文章《分布式事务》中介绍了几种分布式事务,其中Saga介绍了相关的概念,接下来介绍Saga使用案例,案例来源《微服务架构设计模式》。2.案例需求分析2.1一个成功的订单创建流程  实现餐馆系统中的创建订单createOrder()操作。这个操作必须验证消费者是否满足下订单的相关条件、验证订单内容、完成消费者的信用卡授权,以及在数据库中创建Order。一个成功的订单创建流程:创建一个待处理订单;验证订单消费者可以下单;创建后厨工单;对消费者提供的信用卡进行授权操

    2022年9月15日
    0
  • java递归算法详解_Java递归算法详解(动力节点整理)

    java递归算法详解_Java递归算法详解(动力节点整理)递归算法是一种直接或者间接调用自身函数或者方法的算法 Java 递归算法是基于 Java 语言实现的递归算法 递归算法的实质是把问题分解成规模缩小的同类问题的子问题 然后递归调用方法来表示问题的解 递归算法对解决一大类问题很有效 它可以使算法简洁和易于理解 递归算法解决问题的特点 1 递归就是方法里调用自身 2 在使用递增归策略时 必须有一个明确的递归结束条件 称为递归出口 3 递归算法解题通常显得很

    2025年6月11日
    3
  • 在jsp页面将Date类型的日期显示成”yyyy-MM-dd HH:mm:ss”格式

    在jsp页面将Date类型的日期显示成”yyyy-MM-dd HH:mm:ss”格式头部加上:&lt;%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %&gt;内容中使用:&lt;fmt:formatDate value="${post.postDate }" pattern="yyyy-MM-dd HH:mm:ss"/&gt;或者&lt;fmt:formatDate value=&quot

    2022年6月13日
    29
  • Tomcat遇到”Error listenerStart”或”Error filterStart”问题且无详细日志时的log配置….

    Tomcat遇到”Error listenerStart”或”Error filterStart”问题且无详细日志时的log配置….昨天部署web应用到Tomcat之后,无法成功启动,并且控制台没有详细的错误信息,顶多就两行提示信息,例如:严重:ErrorlistenerStart严重:Context[/lizongbo]startupfailedduetopreviouserrors或者严重:ErrorfilterStartorg.apache.catalina.core.StandardCo…

    2022年7月27日
    7
  • 是在传统pc的路上走呢,还是跟潮流走移动互联网「建议收藏」

    这些天在准备期末考试,复习c++,可是总是对手机应用的开发感兴趣,往java方向发展可能前途更好么?以我目前接触的信息来看,貌似java语言更受欢迎,而且照现在的趋势发展,手机这种移动终端的发展应该是以后一段时间的趋势,前几天看到一个关于c++的帖子,说以后c++的程序员会两极分化,学得很好的会找到很好的工作,高新,而学的一般的,全都找不到工作。大意是这样,看了很没有信心,现在全校有一半的专业都在

    2022年3月8日
    51

发表回复

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

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