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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM