【发布时间】:2017-09-10 19:48:51
【问题描述】:
我的库中有这两个类:
class Base {
int _handler;
protected:
Base() = default;
Base& operator=(int h) {
this->_handler = h;
return *this;
}
};
class Derived : public Base {
protected:
Derived() = default;
void initialize() {
this->Base::operator=(12345); // internal stuff
}
};
Derived 类可供用户继承。他应该这样做:
class User_Class : public Derived {
void foo() {
this->initialize();
}
};
但相反,他这样做:
class User_Class : public Derived {
void foo() {
this->Base::operator=(999); // no, you broke it!
}
};
如何防止调用Base 赋值运算符?
【问题讨论】:
-
顺便说一句,
this->的四种用法都不需要。 -
我知道,这只是为了清楚起见(即使它足够明显)。谢谢。
-
您可以将赋值运算符设为私有,然后将
Derived设为Base的朋友? -
你可以使用
private(和Derivedfriend)方法...
标签: c++ inheritance assignment-operator