c++ - vector 指针,继承

标签 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) [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) 如果我创建一个从另一个公共(public)继承的类,子类可以访问母类的所有公共(public)和 protected 但不能私有(private)的元素,对吗?

如果继承 protected ? 还是私下?

我了解到,在所有3种情况下,子类都可以访问公共(public)和 protected 项目,但不能访问私有(private)项目。但真正的区别是什么?

最佳答案

  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 的公共(public)和 protected 成员.局外人只能访问公共(public)内容,并且A无法访问 B 的隐私.

    公共(public)、私有(private)和 protected 继承之间的区别在于除A 之外的哪些类可以看到他们何时与 A 的实例对话*.

    • 通过公共(public)继承,每个人都可以看到在 B 中公开的内容和 A 的子类可以访问 protected 内容。
    • 使用 protected 继承,只有 A 的子类可以访问 B 的公共(public)和 protected 成员.
    • 私有(private)继承,只有A本身可以访问B的成员。

*我完全忘记了关于基类指针的私有(private)和 protected 继承是如何工作的。常识表明,如果您正在与 A 交谈,您可以看到公共(public)内容。通过对 B 的指针/引用,但一旦你沮丧就失去访问权。

关于c++ - vector 指针,继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45259035/

相关文章:

c++ - 如何在 CRTP 实现中传递基类指针

C++ Boost read_json 崩溃,我有#define BOOST_SPIRIT_THREADSAFE

c++ - 具有继承的C++中的段错误

c++ - 什么决定了调用 delete 时写入 C++ 指针的内容?

c++ - 将 boost 与 numerical recipes 3 代码集成

c++ - C++ 中的 for_each()

c - 结构体中的指针是什么意思

c++ - 如何让编译器为派生类选择方法的非模板版本?

c++ - 在 C++ 中,是否可以将一个类声明为从另一个类继承?

python - 使用父类实例创建子类对象