2010-03-26 59 views
5
class CRectangle { 
    int x, y; 
    public: 
    void set_values (int,int); 
    int area (void); 
    } rect; 

在此示例中,在此類定義中,在右大括號和分號之間的意思是什麼?我無法找到明確的解釋。另外:不管它是什麼,你可以爲結構做它嗎?類別聲明混淆 - 右大括號和分號之間的名稱

回答

10

rect是一個變量的名稱(在這種情況下是一個對象)。

正是如同它說:

int rect; 

除了沒有int有一個新的類型的定義,叫做CRectangle。通常情況下,類類型單獨聲明,然後作爲

CRectangle rect; 

,你可能熟悉,但它是完全合法的聲明一個新的類型,像這樣的聲明的一部分。

是的,它適用於結構:

struct SRectangle { int x, y; } rect; 

事實上,你甚至不必給予類型的名稱,如果你不打算再次使用它:

struct { int x, y; } rect; 

這就是所謂的「匿名結構」(它也適用於類)。

+0

這是一個「未命名結構」,而不是「匿名結構」。 C++沒有匿名結構。見http://stackoverflow.com/questions/2253878/why-does-c-disallow-unnamed-structs-and-unions – 2010-03-26 21:47:43

2

它是一個CRectangle類型的對象,它是全局的或屬於根據上下文的名稱空間。

+0

或一個類或一個本地範圍。 – kennytm 2010-03-26 21:09:06

1

它聲明瞭一個實例。就像:

有一個class和C++中的struct之間除了struct的默認公共(訪問修飾符和繼承的問候)

1

結構之間的唯一區別沒有區別類是結構有一個公共默認繼承和訪問和類使用私有默認爲兩者。