**您好。我有两个问题。
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)项目。但真正的区别是什么?
最佳答案
您的运算符定义需要限定符和返回类型。尝试
Ticket_office& Ticket_office::operator =(const Ticket_office &d)
.顺便说一句,这不是复制构造函数。这是一个复制赋值运算符。复制构造函数实际上看起来像一个构造函数,并采用
const Ticket_office&
。作为它的参数。喜欢Ticket_office::Ticket_office(const Ticket_office &other)
.如果你说
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
的成员。
- 通过公共(public)继承,每个人都可以看到在
*我完全忘记了关于基类指针的私有(private)和 protected 继承是如何工作的。常识表明,如果您正在与 A
交谈,您可以看到公共(public)内容。通过对 B
的指针/引用,但一旦你沮丧就失去访问权。
关于c++ - vector 指针,继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45259035/