可不可以定义抽象类的一个对象,调用抽象类中非虚类函数
时间: 2024-01-10 13:20:06 浏览: 77
浅谈java 面对对象(抽象 继承 接口 多态)
在C++中,抽象类是不能被实例化的,也就是不能定义抽象类的对象。因为抽象类中包含纯虚函数,而纯虚函数是没有实现的,所以无法创建抽象类的对象。如果你想要使用抽象类中的非虚函数,可以通过继承抽象类并实现其中的纯虚函数来创建子类对象,并在子类中调用非虚函数。
举个例子,假设有一个抽象类Animal,其中包含纯虚函数eat()和非虚函数sleep():
```
class Animal {
public:
virtual void eat() = 0; // 纯虚函数
void sleep() { // 非虚函数
cout << "Animal is sleeping." << endl;
}
};
```
如果你想要使用Animal类中的sleep()函数,可以通过继承Animal类并实现其中的纯虚函数来创建子类对象:
```
class Dog : public Animal {
public:
void eat() { // 实现纯虚函数
cout << "Dog is eating." << endl;
}
};
int main() {
Dog dog;
dog.sleep(); // 调用非虚函数
return 0;
}
```
在这个例子中,我们创建了一个Dog类,它继承了Animal类并实现了其中的纯虚函数eat()。然后我们创建了一个Dog类的对象dog,并调用了它从Animal类继承而来的非虚函数sleep()。
阅读全文