#include <iostream>
typedef struct _person
{
std::string name;
unsigned int age;
}Person;
int main()
{
Person *pMe = new Person;
pMe->age = 10;
pMe->name = "Larson";
std::cout << "Me " << (*pMe).age << " " << (*pMe).name.c_str() << std::endl;
return 0;
}
考虑上面的代码。可以通过两种方式引用结构的成员。例如,pMe->age
或(*pMe).age
。这只是一种语法差异,还是这两种方法有任何功能差异?
答案 0 :(得分:1)
基本上它是一样的。但是,解除引用运算符(*
)和指针访问运算符(->
)都可以为类类型重载,因此可以为每个类型提供不同的行为。然而,这是一个非常特殊的情况,而不是你的样本中的情况。
答案 1 :(得分:1)
这只是一种语法差异,可以找到差异的原因here
因为通过指针访问结构体和类成员的语法很笨拙,所以C ++提供了第二个成员选择运算符( - &gt;),用于从指针中进行成员选择。因此两条线都是等价的。 - &gt;运算符不仅更容易键入,而且也更不容易出错,因为没有优先级问题需要担心。因此,当通过指针进行成员访问时,请始终使用 - &gt;操作