在抽象类是否可以定义数据成员?

Simon Tsui 2009-05-14 10:43:30
如题!
在类做成中,抽象类只是起到规范接口的作用,很少在抽象类中定义数据成员,但是在抽象类中定义数据成员是否正确,这样做会有什么危害吗?
...全文
2073 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq120848369 2010-11-25
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

class A
{
public:
A(int i):m_i(i)
{
}

virtual void doSth()=0;

protected:
int m_i;
};

class B:public A
{
public:
B(int i):A(i)
{

}

virtual void doSth()
{
cout<<m_i<<endl;
}
};

int main()
{
B b(2);
b.doSth();

A *p=new B(2);
p->doSth();

return 0;
}
libinfei8848 2010-11-25
  • 打赏
  • 举报
回复
可以定义,非静态成员变量只能用派生类对其初始化
qq120848369 2010-11-25
  • 打赏
  • 举报
回复
抽象类就是纯虚函数的类,如果你所有的派生类都拥有同一种数据,可以把数据成员定义为抽象类的proteced成员.
liutengfeigo 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pengzhixi 的回复:]

可以,但是不建议这么做。既然是抽象类,那么就只提供接口。
[/Quote]
++
pengzhixi 2010-11-25
  • 打赏
  • 举报
回复
可以,但是不建议这么做。既然是抽象类,那么就只提供接口。
mltong 2010-11-25
  • 打赏
  • 举报
回复
接口类中都是virtual void fun() = 0;这样的函数声明,没有必要加数据成员,在实现类中定义成员变量即可。我是这么认为的。
butwang 2009-05-14
  • 打赏
  • 举报
回复
抽象类可以定义数据成员,但一般通过 get set之类的函数操作,
接口是一种特殊的抽象类吧,接口里只能有函数
C++没有专门的接口定义,一般用抽象类表示

64,670

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧