[C++] 关于 构造函数(construction) 析构函数(destruction)中调用虚函数
2018-02-01 15:07
351 查看
在“构造函数”/“析构函数”中,调用虚函数需要通过类命调用“成员函数”
通常和多继承下,对有歧义的函数,需要“类名::函数名”的方式调用,如,定义与“基类的函数”同名的函数(特别是'重写')
class Animal
{
public:
Animal() { ... };
virtual void Run() { ... }
virtual void Walk(){ ... }
};
class Dog: public Animal //Dog类,继承Animal类
{
public:
Dog()
{
...
Run(); //错误,会调用Animal类的Run()函数
Dog::Walk(); //正确,指定Dog类的Walk()函数
...
};
void Run() override { ... } //重写Animal::Run()函数
void Walk() override { ... } //重写Animal::Walk()函数
};
通常和多继承下,对有歧义的函数,需要“类名::函数名”的方式调用,如,定义与“基类的函数”同名的函数(特别是'重写')
class Animal
{
public:
Animal() { ... };
virtual void Run() { ... }
virtual void Walk(){ ... }
};
class Dog: public Animal //Dog类,继承Animal类
{
public:
Dog()
{
...
Run(); //错误,会调用Animal类的Run()函数
Dog::Walk(); //正确,指定Dog类的Walk()函数
...
};
void Run() override { ... } //重写Animal::Run()函数
void Walk() override { ... } //重写Animal::Walk()函数
};
相关文章推荐
- 构造函数和析构函数,在C++中能否声明为虚函数?构造函数和析构函数里面能否调用虚函数?
- 《深度探索c++ 对象模型》有感之构造函数和析构函数不能调用虚函数
- c++使用技巧: 不要在构造函数/析构函数中调用虚函数
- c++使用技巧: 不要在构造函数/析构函数中调用虚函数
- C++ 构造函数,析构函数中能否调用虚函数?
- 关于c++构造函数、析构函数在全局实例(global)和在局部实例先后顺序
- 关于构造函数,拷贝构造函数与析构函数的自动调用的问题分析
- C++多重继承中构造函数和析构函数调用顺序举例
- C++笔试题 关于函数析构函数未调用的问题
- C++中构造函数和析构函数调用的时机
- <C++>13.构造函数和析构函数的调用顺序
- 关于构造函数和析构函数的隐式调用
- 读书笔记 effective c++ Item 9 绝不要在构造函数或者析构函数中调用虚函数
- C++中构造函数和析构函数避免调用虚函数的问题
- C++:构造函数和析构函数能否为虚函数
- C++ 构造函数 析构函数 虚函数
- Java程序员学习C++之构造函数和析构函数调用的时机
- C++中函数调用中构造函数、析构函数、赋值过程
- C++:构造函数和析构函数能否为虚函数
- 虚函数,构造函数,析构函数调用