2010-06-04 29 views
1
#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。这仅仅是一种语法差异,还是在这两种方法中可用的功能差异?指向结构的成员访问语法

回答

1

这只是用于区别一个句法差,究其原因,可以发现here

由于用于通过一个指针访问结构和类成员的语法是尴尬,C++提供第二成员选择运算符( - > )从指针做成员选择。因此两条线都是相同的。 - >运算符不仅更容易输入,而且也更不容易出错,因为没有优先级问题需要担心。因此,通过指针进行成员访问时,请始终使用 - >运算符。

1

基本上是一样的。但是,引用运算符(*)和指针访问运算符(->)都可以为类类型重载,因此可以为它们中的每一个提供不同的行为。然而,这是一个非常特殊的情况,而不是你的例子。