2010-06-04 27 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

基本上是一樣的。但是,引用運算符(*)和指針訪問運算符(->)都可以爲類類型重載,因此可以爲它們中的每一個提供不同的行爲。然而,這是一個非常特殊的情況,而不是你的例子。