2017-07-22 143 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对话,则可以看到公共内容,但是一旦您下线,就会失去访问权限。