Sal*_*lah 0 c++ virtual-functions
以下代码给我一个错误。
错误:覆盖了'virtual void Animal :: getClass()',其中说virtual void getClass(){cout <<“我是动物” << endl; }
错误:为'virtual int Dog :: getClass()'指定的返回类型冲突,它说getClass(){cout <<“我是狗” << endl; }
另外,它说:
“狗”类具有虚拟方法“ getClass”,但非虚拟析构函数
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include<sstream>
#include <stdlib.h> // srand, rand
#include <stdio.h>
using namespace std;
class Animal{
public:
void getFamily(){ cout << "We are animals " << endl;}
virtual void getClass() { cout << "I'm an animal" << endl; }
};
class Dog : public Animal{
public:
getClass(){ cout << "I'm a dog" << endl; }
};
void whatClassAreYou(Animal *animal){
animal -> getClass();
}
int main(){
Animal *animal = new Animal;
Dog *dog = new Dog;
animal->getClass();
dog->getClass();
whatClassAreYou(animal);
whatClassAreYou(dog);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
将类Dog中的定义更改为:
void getClass() { /* ... */ }
Run Code Online (Sandbox Code Playgroud)
当您声明没有返回类型时,编译器会将返回类型设置为int。这会产生错误,因为重写的方法必须具有与其覆盖的基类方法相同的返回类型。
| 归档时间: |
|
| 查看次数: |
1237 次 |
| 最近记录: |