向量指针,继承

时间:2017-07-22 20:44:49

标签: c++ pointers inheritance vector

**嗨。我有两个问题。

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;
}

编译器给我这个错误: -

  

1)[错误]声明“Ticket_office&amp; amp; operator =(const Ticket_office&amp;)&#39;&#34;

     

2)[错误]&#39; Ticket_office&amp; operator =(const Ticket_office&amp;)&#39;必须是非静态成员函数&#34;

为什么呢?我不明白?

第二个问题:

2)如果我创建一个从另一个公共继承的类,那么女儿类可以访问公共和受保护但不私有的母类的所有元素,对吗?

如果继承在受保护的? 私下里?

据我所知,在所有3种情况下,子类都可以访问公共和受保护的项目,但无法访问私有项目。但真正的区别是什么?

1 个答案:

答案 0 :(得分: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 <的实例通话时可以看到的类SUP> *

    • 通过公共继承,每个人都可以在B中看到公开的内容,A的子类可以访问受保护的内容。
    • 使用受保护的继承,只有A的子类可以访问B的公共成员和受保护成员。
    • 使用私有继承,只有A本身才能访问B的成员。
  3. * 我完全忘记了私有和受保护的继承如何处理基类指针。如果您通过指向A的指针/引用与B交谈,常识会建议你看到公共内容,但是一旦你向下转发就会失去访问权。