什麼用指定特定的類以上其他的類名?
class A;
class B;
class C
{
...
...
};
什麼用指定特定的類以上其他的類名?
class A;
class B;
class C
{
...
...
};
這是一個forward declaration。
作爲C的宿醉,C++編譯器以一種從上到下的方式工作(或多或少)。如果您希望您的類C
以某種方式(通過指針或引用)引用類A
或類B
,則編譯器必須事先知道它們的存在。
這就是所謂的一個forward declaration。它允許你聲明一個指向該類型的指針而不包括它的定義。當然,由於就編譯器而言此定義不存在,因此只能聲明指向該類型的指針或引用,因爲編譯器不知道如何構造該類型的對象,即它不能確定其大小。
這被稱爲前向聲明,並允許在定義的類的原型中使用這些類。
通過正向聲明這樣的類,你告訴編譯器該類存在,不用擔心,你將在以後鏈接它們。
這不是將頭文件包含在完整定義中,而且如果編譯器不需要知道類是什麼樣的話就足夠了。例如,如果您只將指針或引用到當前文件中的類。
檢查我標記爲重複的Q,它解釋了在使用前向聲明時可以做什麼和不能做什麼。 –