【发布时间】:2017-03-05 01:53:10
【问题描述】:
我正在从 c 过渡到 c++,当然,事实证明 OOP 比预期的要困难。困难不在于理解类和继承的核心机制,而是如何使用它。我读过关于设计模式的书,但它们只展示了这些技术,并模糊地描绘了为什么应该使用这些技术。我真的很难找到抽象类的用途。以下面的代码为例。
class baseClass {
public:
virtual void func1() = 0;
virtual void func2() = 0;
};
class inhClass1 : baseClass {
public:
void func1();
void func2();
};
class inhClass2 : baseClass{
public:
void func1();
void func2();
};
int main() {}
我经常在设计书籍中看到这样设置的抽象类。我知道通过这种配置,继承的类可以访问基类的公共成员。我知道虚函数是继承类的占位符。问题是我仍然不明白这有什么用。我试图将它与重载函数进行比较,但我没有看到实际用途。
我真正想要的是有人给出最简单的例子来说明为什么抽象类实际上是有用的,并且是针对某种情况的最佳解决方案。不要误会我的意思。我并不是说没有一个好的答案。我只是不明白如何正确使用它们。
【问题讨论】:
-
你了解接口的概念吗?
-
不完全。我读过它们,但我真的不明白它们。据我了解,基类将是一个接口。至少在这个例子中。
-
显示的代码中没有抽象类。
-
哇,现在我真的很困惑。
-
@mreff555 ABC 可用于在 c++ 中创建接口,因为 c++ 没有像 Java 这样的显式接口。长话短说,如果一个类实现了一个接口,你就知道它有一定的功能。 ABC 允许您拥有一个接口,该接口还包含可以由实现者共享的代码。
标签: c++ oop abstract-class