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