C++求大神指教

bigwangdi 2012-12-28 09:26:53



运行出错:‘

...全文
409 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
bigwangdi 2013-01-01
  • 打赏
  • 举报
回复
引用 22 楼 luxifa1234 的回复:
完整代码,vs2010亲测成功 C/C++ code?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960//#include <iostream>//using namespace std;////c……
++
追求执着 2012-12-31
  • 打赏
  • 举报
回复
引用 4 楼 bljswpu 的回复:
在virtual里面,如果你要把它定义为纯虚函数的话,在后面 =0 否则在后面加{}
这个+1
Apple_____ 2012-12-31
  • 打赏
  • 举报
回复
额,上面那个注释的不小心也粘上去了,不要看呀
Apple_____ 2012-12-31
  • 打赏
  • 举报
回复
完整代码,vs2010亲测成功

//#include <iostream>
//using namespace std;
//
//class Base{
//public:
//	void run() { display(); }
//	virtual void display() { cout<< "Base" <<endl; }
//};
//
//class Drive: public Base{
//public:
//	void display() { cout<< "Drive" <<endl; }
//};
//
//int main(void)
//{
//	Base *p = new Drive;
//	p->run();
//	delete p;
//	system("PAUSE");
//	return 0;
//}

#include <iostream>
using std::endl;
using std::cout;

class ISpeak
{
public:
	virtual void speak() = 0;	// 纯虚函数不用实现

	virtual ~ISpeak() {};			// 析构函数为虚函数
};

class Bark
	:public ISpeak
{
public:
	void speak() { cout<< " dog bark.." << endl; }
};

class Dog
	:public Bark
{
public:
	Dog():age(0) {}
private:
	int age;
};

int main()
{
	Dog d;
	ISpeak* s = &d;
	s->speak();
	cout<< "Hello world!" <<endl;

	return 0;
}
风少癫 2012-12-31
  • 打赏
  • 举报
回复
class ISpeak { public: virtual void speak() { std::cout<<"dog bark.."<<std::endl; } }; 基类虚函数未定义完全
蜗牛快走 2012-12-31
  • 打赏
  • 举报
回复
虚函数未定义完全
jimette 2012-12-30
  • 打赏
  • 举报
回复
4l 正解。。
Defonds 2012-12-30
  • 打赏
  • 举报
回复
定义完整一下吧
bigwangdi 2012-12-30
  • 打赏
  • 举报
回复
引用 11 楼 FrankHB1989 的回复:
就算=0还是得定义,而且还不能放class-body里面。{}吧。
如果作为抽象类是没必要实现的,使用=0就OK了,这样的话不能创建类的实例,作为接口来使用。
bigwangdi 2012-12-30
  • 打赏
  • 举报
回复
引用 6 楼 ganpengjin1 的回复:
引用 4 楼 bljswpu 的回复:在virtual里面,如果你要把它定义为纯虚函数的话,在后面 =0 否则在后面加{} 这是一种方法,作为接口使用,第二种,你实现一下它
恩,是的
bigwangdi 2012-12-30
  • 打赏
  • 举报
回复
引用 4 楼 bljswpu 的回复:
在virtual里面,如果你要把它定义为纯虚函数的话,在后面 =0 否则在后面加{}
是应该这样的,疏忽了,呵呵,改回来就好了,多谢啦,看来写代码还是要认真点。
hanyue03 2012-12-29
  • 打赏
  • 举报
回复

class ISpeak
{
public:
virtual void speak(){}
};
看楼主既然有用ISpeak的实例,应该需要这样吧
FrankHB1989 2012-12-28
  • 打赏
  • 举报
回复
引用 11 楼 FrankHB1989 的回复:
就算=0还是得定义,而且还不能放class-body里面。{}吧。
好吧眼残。。。如果是virtual ~ISpeak() = 0;还要另外定义;这里=0可以不用。
FrankHB1989 2012-12-28
  • 打赏
  • 举报
回复
就算=0还是得定义,而且还不能放class-body里面。{}吧。
Binzo 2012-12-28
  • 打赏
  • 举报
回复
virtual void speak(){}
ttm0316 2012-12-28
  • 打赏
  • 举报
回复
引用 8 楼 zilaishuichina 的回复:
ISpeak 里面 要么 virtual void speak(){}; 要么 virtual void speak() = 0;
个人觉得也是这样。楼主可以试一下。
zilaishuichina 2012-12-28
  • 打赏
  • 举报
回复
ISpeak 里面 要么 virtual void speak(){}; 要么 virtual void speak() = 0;
prajna 2012-12-28
  • 打赏
  • 举报
回复
class ISpeak { public: virtual void speak(){} };
漫步者、 2012-12-28
  • 打赏
  • 举报
回复
引用 4 楼 bljswpu 的回复:
在virtual里面,如果你要把它定义为纯虚函数的话,在后面 =0 否则在后面加{}
这是一种方法,作为接口使用,第二种,你实现一下它
derekrose 2012-12-28
  • 打赏
  • 举报
回复
ISpeak是一个未完成的类啊,而且尽量把构造函数析构函数的写上,反正我喜欢写上~
加载更多回复(4)

64,685

社区成员

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

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