有一天寫類的時候突然想到了這個問題,下面就來介紹如何解決這個問題。
定義一個類:
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指針來將這兩變量進行區別。