#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;
}
这段代码横线处报错 无法运行
谢谢了