C/C++中.和->的区别
以下不区分结构体和类,统一以类来讲,本质上是一样的 . 代表类的指向,-> 代表指针的指向
举例:其中两个函数的效果是完全等价的,都会改变传进来的类里的a的值
class MY_CLASS
{
public:
int a;
};
void class_test1(MY_CLASS *test)
{
(*test).a=1;
}
void class_test2(MY_CLASS *test)
{
test->a=1;
}
完整代码
#include "iostream"
using namespace std;
class MY_CLASS
{
public:
int a;
};
void class_test(MY_CLASS *test)
{
test->a=1;
}
int main()
{
MY_CLASS my_class;
my_class.a=0;
cout << my_class.a << endl;
class_test(&my_class);
cout << my_class.a << endl;
}
#include "iostream"
using namespace std;
class MY_CLASS
{
public:
int a;
};
void class_test(MY_CLASS *test)
{
(*test).a=1;
}
int main()
{
MY_CLASS my_class;
my_class.a=0;
cout << my_class.a << endl;
class_test(&my_class);
cout << my_class.a << endl;
}
输出结果是一样的 :
额外的:
以上区别已经讲完,在这个示例中,我们如果不需要改变原来的实际的值,可以不传地址,只传类 就这样写 :
#include "iostream"
using namespace std;
class MY_CLASS
{
public:
int a;
};
void class_test(MY_CLASS test)
{
test.a=1;
}
int main()
{
MY_CLASS my_class;
my_class.a=0;
cout << my_class.a << endl;
class_test(my_class);
cout << my_class.a << endl;
}
输出: 可以看到并没有改变原来的值
|