【发布时间】:2012-10-29 18:08:21
【问题描述】:
假设我有一个名为CWindow的课程:
class CWindow
{
public:
virtual bool Create();
};
在派生类CMyWindow中,我想将Create(void)方法重载为Create(int someParam),但是,我不希望用户能够调用Create(void)方法,只能调用Create(int someParam)。这可能吗?可以吗:
class CMyWindow : public CWindow
{
private:
bool Create();
public:
virtual bool Create(int someParam);
};
这有效吗?它基本上会让CWindow的以前的公共成员成为CMyWindow的私人成员吗?
我想如果可以从一个类中“排除”一个成员,这是最接近这样做的,因为 AFAIK 在 C++ 中没有神奇的 youcantbeamember 关键字
我最好的猜测是不,你不能这样做。但我只是希望,因为我想避免创建一个包含除 Create() 成员之外的所有内容的基类,并从 CWindowBase 派生 CWindow 和 CMyWindow。
【问题讨论】:
-
这是完全有效的代码,应该可以正常工作。
-
static_cast<CWindow*>(ptrToCMyWindow)->Create();将永远是可能的
标签: c++ oop inheritance polymorphism virtual