c++中成员函数的参数名与成员变量名重合的问题

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

定义一个类:

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

void test::setnum(){
    num = 10;
}

void test::getnum(){
    printf("%d\n",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\n",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指针来将这两变量进行区别。

原文地址:https://www.cnblogs.com/mlgjb/p/8819410.html

时间: 2024-10-10 20:04:57

c++中成员函数的参数名与成员变量名重合的问题的相关文章

C++——将成员函数作为参数

在C++中,成员函数指针作为参数传递给其他函数和普通函数指针的传递是不同的,首先 我们来回顾一下普通函数指针的传递方法: //-------------------------------------------------------------------------- int fun1(int i){          return i; } void fun2(int j, int (*p)(int)){          cout << p(j); } void main() {  

C++中的函数及参数介绍

函数的概念 函数是一组一起执行一个任务的语句.每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数. 你可以把代码划分到不同的函数中.如何划分代码到不同的函数中是由你来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的. 函数声明告诉编译器函数的名称.返回类型和参数.函数定义提供了函数的实际主体. C++ 标准库提供了大量的程序可以调用的内置函数.例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内

javascript中所有函数的参数都是按值传递的

[javascript中所有函数的参数都是按值传递的] 参考:http://www.jb51.net/article/89297.htm

C++中的内联成员函数与非内联成员函数

在C++中内联成员函数与非内联成员函数的可以分为两种情况: 1.如果成员函数的声明和定义是在一起的,那么无论有没有写inline这个成员函数都是内联的,如下: using namespace std; class test{ public: void fuc() { cout << "ok!" << endl; } }; int main(void) { test t, t1; t.fuc(); t1.fuc(); return 0; } 或者: using n

Delphi中StrToDateTime函数TFormatSettings参数的使用

http://blog.csdn.net/arbin_he/article/details/7415300 Delphi中StrToDateTime函数TFormatSettings参数的使用 分类: Delphi2012-03-31 13:15 12267人阅读 评论(6) 收藏 举报 delphistring测试user [delphi] view plaincopy var FSetting : TFormatSettings; DateTime1: tDateTime; begin FS

C++类的成员函数(在类外定义成员函数、inline成员函数)

类的成员函数(简称类函数)是函数的一种,它的用法和作用和前面介绍过的函数基本上是一样的,它也有返回值和函数类型,它与一般函数的区别只是:它是属于一个类的成员,出现在类体中.它可以被指定为private(私有的).public (公用的)或protected(受保护的). 在使用类函数时,要注意调用它的权限(它能否被调用)以及它的作用域(函数能使用什么范围中的数据和函数).例如私有的成员函数只能被本类中的其它成员函数所调用,而不能被类外调用.成员函数可以访问本类中任何成员(包括私有的和公用的),可

向线程中的函数传入参数的注意事项

1. 当函数的形参类型为 string, 而传入的参数类型为 char[] 时, 需要在线程函数中转型, 如此可以避免空悬指针.如: void f(int, std::string const&); void oops(int some_parm) { char buffer[100]; sprintf(buffer, "%i", some_parm); //std::thread(f, 3, buffer) //not do this std::thread(f, 3, st

C++模板编程中只特化模板类的一个成员函数(花样特化一个成员函数)

转自:https://www.cnblogs.com/zhoug2020/p/6581477.html 模板编程中如果要特化或偏特化(局部特化)一个类模板,需要特化该类模板的所有成员函数.类模板中大多数成员函数的功能可能是一模一样的,特化时我们可能只需要重新实现1.2个成员函数即可.在这种情况下,如果全部重写该模板类的所有成员函数,不但会增加工作量,也不利于代码的维护. 例如下面的类模板A,只有在模板参数是char*时才需要特化成员函数func(),但其他的成员函数都不需要特化: 1 templ

C 中 main 函数的参数

      看到不同的人写出的 C 或者 C++ 程序时,可能会出现不一样的 main 函数的定义,下面的几种定义方式都是对的: int main(void) int main(int argc) int main(int argc, /*const*/ char** argv) int main(int argc, /*const*/ char** argv, /*const*/ char** enviorn)       这几种方式中,第三种方式是最常用的.那么,这些参数代表着什么呢?下面,