不能构造继承纯虚父类的子类

__lhy 2011-06-17 08:11:10
#include "StdAfx.h"
#include <iostream>
using namespace std;

class Base
{
public:
virtual void Print()=0;
protected:
private:
};
void Base::Print()
{
cout << "base" << endl;
}
class Child:public Base
{
public:
Child()
{

};
void Print1()//必须为Print
{
cout << "hello,world" << endl;
Base::Print();
};
protected:
private:
};
int main(int argc, char* argv[])
{
Child c;
c.Print1();
return 0;
}
语法不通过,用C++有一些时间了,感觉平时关注语法真的好少。。。
...全文
96 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ryfdizuo 2011-06-17
  • 打赏
  • 举报
回复
赵本C++书看一下,基础问题
__lhy 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 maoxing63570 的回复:]

引用 3 楼 qq752923276 的回复:
我知道Base是纯虚类,继承纯虚类必需实现纯虚类的接口 为什么 语法规定吗

可以不用实现但是子类也就是抽象类
[/Quote]
嗯 是的 结贴
__lhy 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dizuo 的回复:]

你都已经定义了Print函数,干嘛还要申明为纯虚接口呢?
void Base::Print()
{
cout << "base" << endl;
}
基类有纯虚接函数就不能直接实例化,派生类如果没有定义纯虚函数也不能实例化对象
[/Quote]
测试而已
ryfdizuo 2011-06-17
  • 打赏
  • 举报
回复
你都已经定义了Print函数,干嘛还要申明为纯虚接口呢?
void Base::Print()
{
cout << "base" << endl;
}
基类有纯虚接函数就不能直接实例化,派生类如果没有定义纯虚函数也不能实例化对象
itslmde 2011-06-17
  • 打赏
  • 举报
回复
唔,是基类
itslmde 2011-06-17
  • 打赏
  • 举报
回复
抽象类是不能实例化的,派生类没有重写基本的纯虚方法,也是抽象类。
maoxing63570 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qq752923276 的回复:]
我知道Base是纯虚类,继承纯虚类必需实现纯虚类的接口 为什么 语法规定吗
[/Quote]
可以不用实现但是子类也就是抽象类
__lhy 2011-06-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dizuo 的回复:]

C/C++ code
#include <iostream>
using namespace std;

class Base
{
public:
virtual void Print(); //加=0是纯虚接口。
protected:
private:
};
void Base::Print()
{
cout << "base" << endl;
}
class Child……
[/Quote]
我知道Base是纯虚类,继承纯虚类必需实现纯虚类的接口 为什么 语法规定吗
昵称很不好取 2011-06-17
  • 打赏
  • 举报
回复
子类把父类的纯虚函数实现一下
ryfdizuo 2011-06-17
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

class Base
{
public:
virtual void Print(); //加=0是纯虚接口。
protected:
private:
};
void Base::Print()
{
cout << "base" << endl;
}
class Child:public Base
{
public:
Child()
{

};
void Print1()//必须为Print
{
cout << "hello,world" << endl;
Base::Print();
};
protected:
private:
};
int main(int argc, char* argv[])
{
Child c;
c.Print1();
return 0;
}

64,649

社区成员

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

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