你好,假设我有一个抽象类,它有一些纯抽象函数,我有一些派生自这个类的类,这些类的所有数据最终变得相似,我想知道这是否明智,甚至可以在抽象类中声明一个 protected vector 来收集数据,例如。
class A
{
protected:
vector <string> str;
public:
virtual function x();
virtual function y(); //etc etc
virtual ~A(){;}
};
class B : public A
{
public:
function x();
function y();
};
class C: public A
{
//similar to class B
} ;
我很难理解纯虚函数如何与 c++ 一起工作,我理解多态性,因为我在 java 中用它做过很多项目。由于无法实例化 C++ 中的抽象类,甚至可以声明和使用该 vector 吗?
最佳答案
I was wondering if it would be wise or even possible to declare a vector under protected in the abstract class to collect the data.
是的,提升在多个派生类型之间共享的数据成员是一个合理的设计选择。
What type of members can I add in a c++ abstract class?
您可以在抽象类中添加任何类型的成员。一般来说,一个类的数据成员应该只在该类的构造函数和其他成员函数中被初始化和赋值。否则会破坏封装,从而使类的维护和修改更加困难。
I am having difficulty understanding how pure virtual functions work with c++
通过在声明的末尾放置 = 0 来指定虚函数为纯函数。您不必为纯虚函数提供定义。
您不能声明抽象基类的实例;在声明其他类时,您只能将其用作基类。
关于c++ - 我可以在 C++ 抽象类中添加什么类型的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13816728/