c++抽象类的疑惑 请大佬指点

#include<iostream>
using namespace std;
class vehicle
{public:
virtual void run()= 0;
virtual ~vehicle(){}
};
class car:public vehicle
{public:
void run()
{cout<<"run in roads"<<endl;}
};
class boat:public vehicle
{public:
void run()
{cout<<"float over waters"<<endl;}
};
class submarine:public vehicle
{public:
void run()
{cout<<"dive in marines"<<endl;}
};
void vehiclerun(vehicle v)
{v.run();}
int main() 
{car c;
boat b;
submarine s;
vehiclerun(c);
vehiclerun(b);
vehiclerun(s);
return 0;
}

你定义的类vehicle 是一个抽象基类,对于对象的实例化要求必须是具体的某个对象,所以你在实例化抽象类对象时会报错无法实例化,可以改成这样的形式:

#include<iostream>
using namespace std;
class vehicle
{
public:
	virtual void run() = 0;
	virtual ~vehicle() {}
};
class car :public vehicle
{
public:
	void run()
	{
		cout << "run in roads" << endl;
	}
	void vehiclerun()
	{
		run();
	}
};
class boat :public vehicle
{
public:
	void run()
	{
		cout << "float over waters" << endl;
	}
	void vehiclerun()
	{
		run();
	}
};
class submarine :public vehicle
{
public:
	void run()
	{
		cout << "dive in marines" << endl;
	}
	void vehiclerun()
	{
		run();
	}
};
int main()
{
	car c;
	boat b;
	submarine s;
	c.vehiclerun();
	b.vehiclerun();
	s.vehiclerun();
	return 0;
}

 

这段代码横线处报错 无法运行

谢谢了