#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++提供了第二个成员选择运算符(->)从指针中进行成员选择。因此,这两条线是等效的。
->运算符不仅更易于键入,而且由于没有优先级问题而不太容易出错。因此,在通过指针进行成员访问时,请始终使用->运算符。

09-06 06:58