2017-07-22 141 views
0

** Hi.I有2個問題。矢量指針,繼承

1)我正在做一個拷貝構造函數。 我所作的陳述是:**

ticket_office& operator=(const ticket_office& d); 

但是,當我執行的功能,現在我發佈你:

ticket_office&::operator= (const ticket_office& d){ 

sizeTickets_sold=d.sizeTickets_sold; 
capacityTickets_sold=d.capacityTickets_sold; 

if(this!=&d){ 

    Tickets_for_sale=d.Tickets_for_sale; 

    Tickets_sold=new Ticket[d.capacity]; 

    for(int i=0;i<sizeTickets_sold;i++){ 
     Tickets_sold[i]=d.Tickets_sold[i]; 
    } 
} 

return* this; 
} 

的compilator給了我這個錯誤: -

1) [Error] explicit qualification in declaration of 'Ticket_office& operator=(const Ticket_office&)'"

2) [Error] 'Ticket_office& operator=(const Ticket_office&)' must be a nonstatic member function"

爲什麼?我不明白?

而第二個問題:

2)如果我創建一個公共繼承另一個類,女兒類可以訪問母類是公共和受保護的所有元素,但不是私下,對不對?

如果繼承保護? 私人?

據我所知,在所有3種情況下,子類可以訪問公共和受保護的項目,但不能訪問私有項目。但真正的區別是什麼?

回答

3
  1. 您的運算符定義需要限定符和返回類型。嘗試Ticket_office& Ticket_office::operator =(const Ticket_office &d)

    順便說一下,這不是一個複製構造函數。這是一個複製分配操作員。複製構造函數實際上看起來像一個構造函數,並以const Ticket_office&作爲參數。像Ticket_office::Ticket_office(const Ticket_office &other)

  2. 如果說class A : public B,那麼是的,A成員函數可以訪問的B公共和保護成員。外部人員只能訪問公共資料,A不能訪問B的私人資源。

    公共,私有和保護繼承之間的區別是什麼類其他A可以看到,當他們談論的A*一個實例。

    • 隨着公有繼承,每個人都可以看到,在B是公共的東西,和A子類可以訪問受保護的東西。
    • 對於受保護的繼承,只有A的子類才能訪問B的公共和受保護成員。
    • 對於私有繼承,只有A本身才能訪問B的成員。

*我忘了究竟如何私有和保護繼承工作,對於基類指針。常識意味着,如果您通過指向B的指針或引用與A對話,則可以看到公共內容,但是一旦您下線,就會失去訪問權限。