有一天写类的时候突然想到了这个问题,下面就来介绍如何解决这个问题。
定义一个类:
class test{
public:
void setnum();
void getnum();
private:
int num;
};
void test::setnum(){
num = 10;
}
void test::getnum(){
printf("%d
",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
",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指针来将这两变量进行区别。