zoukankan      html  css  js  c++  java
  • c++中成员函数的参数名与成员变量名重合的问题

     

    有一天写类的时候突然想到了这个问题,下面就来介绍如何解决这个问题。

    定义一个类:

    class test{
    public:
        void setnum();
        void getnum();
    private:
        int num;
    };
    
    void test::setnum(){
        num = 10;
    }
    
    void test::getnum(){
        printf("%d
    ",num);
    }

    运行:

    int main()
    {
     
           test one;
           one.setnum();
           one.getnum();
       
           return 0;
    }

    控制台输出100,这说明成员函数可以不依靠参数传参,可以直接对成员变量进行修改

     

    接下来我们可以对赋值的成员函数进行一下修改:

    #include <stdio.h>
    
    #include <windows.h>
    #include <mysql.h>
    
    
    class test{
    public:
        void setnum(int x);
        void getnum();
    private:
        int num;
    };
    
    void test::setnum(int x){
        num = x;
    }
    
    void test::getnum(){
        printf("%d
    ",num);
    }
    
    int main()
    {
     
           test one;
           one.setnum(100);
           one.getnum();
       
           return 0;
    }

    控制台输出100

     

    我们再进行一下修改:

    class test{
    public:
        void setnum(int num);
        void getnum();
    private:
        int num;
    };
    
    void test::setnum(int num){
        num = num;
    }

    这个时候在运行的话,发现赋值的成员函数根本就没有运行。

     

    解决办法为:

    void test::setnum(int num){
        this->num = num;
    }

    this指针来将这两变量进行区别。

  • 相关阅读:
    树形视图和列表视图中的HitTest
    VC++中隐藏代码
    C++指针&引用简笔
    自动化流程学习笔记
    xampp for linux遇见的几个问题
    django用户验证模块核心
    win+r 快捷
    python 获取桌面路径
    我的linux常用操作
    个人悟出的一些观点
  • 原文地址:https://www.cnblogs.com/mlgjb/p/8819410.html
Copyright © 2011-2022 走看看