2017-02-26 40 views
3

我從C轉向C++和碰到這裏scoperesolution頁面信息,是非常有益的 What does "ClassName ClassName::FunctionName" mean in C++?指針在範圍解析操作前的類名

但我也遇到了下面的代碼,我打算去學習和它在類名前有一個指針,所以我的問題是在什麼情況下使用指針。

const char *TObject::ClassName() const 
{ 
    // Returns name of class to which the object belongs. 
    return IsA()->GetName(); 
} 
+0

通常把它寫成const char * TObject :: ClassName()const來強調'*'屬於返回類型,並且它不代表函數指針。 –

回答

2

這是一個在其類之外的成員函數的常規定義。星號在這方面沒有特別的含義。

首先,回顧一下你如何定義在C函數返回一個指針:

const char *Foo() { 
    return something; 
} 

,你看到具有相同的結構,除了兩個元素聲明:

  • 的全名該函數使用範圍解析運算符,並且
  • 函數後面有一個const

意味着什麼範圍分辨率就是ClassName是屬於TObject類中的成員函數,以及const在結束意味着該成員函數的代碼不改變它的類的成員變量。