有一天写类的时候突然想到了这个问题,下面就来介绍如何解决这个问题。
定义一个类:
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