• 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指针来将这两变量进行区别。

  • 相关阅读:
    CORS实践
    xunsearch使用记录
    apk的php解析
    MYSQLI_USE_RESULT or MYSQLI_STORE_RESULT
    企业图谱
    《软件需求工程》阅读笔记03
    2020年下半年学习进度12
    《软件需求工程》阅读笔记02
    2020年下半年学习进度11
    《软件需求工程》阅读笔记01
  • 原文地址:https://www.cnblogs.com/mlgjb/p/8819410.html
Copyright © 2020-2023  润新知