#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
。这仅仅是语法上的差异,还是这两种方法之间存在功能上的差异? 最佳答案
这只是语法上的差异,而差异的原因可以在here中找到
因为通过指针访问结构和类成员的语法很尴尬,所以C++提供了第二个成员选择运算符(->)从指针中进行成员选择。因此,这两条线是等效的。
->运算符不仅更易于键入,而且由于没有优先级问题而不太容易出错。因此,在通过指针进行成员访问时,请始终使用->运算符。