c++ 举一个例子来表示加不加override的区别
时间: 2024-01-22 17:19:06 浏览: 64
好的,假设我们有一个父类Animal和一个子类Dog:
```c++
class Animal {
public:
virtual void makeSound() {
cout << "This is an animal sound." << endl;
}
};
class Dog : public Animal {
public:
void makeSound() {
cout << "Bark bark!" << endl;
}
};
```
现在我们在Dog类中加入`override`关键字:
```c++
class Dog : public Animal {
public:
void makeSound() override {
cout << "Bark bark!" << endl;
}
};
```
这个关键字告诉编译器我们想要覆盖(override)父类中的makeSound函数。如果我们写错了函数名或参数列表,编译器会发出警告。
另外,如果我们在子类中使用了override关键字,但是父类中没有对应的虚函数,编译器会发出错误。比如我们在Animal类中删除虚函数:
```c++
class Animal {
public:
void makeSound() {
cout << "This is an animal sound." << endl;
}
};
class Dog : public Animal {
public:
void makeSound() override {
cout << "Bark bark!" << endl;
}
};
```
编译器会报错,因为我们试图在子类中覆盖一个不存在的虚函数。
阅读全文