C++ 构造里调用虚函数
时间: 2024-09-16 07:06:00 浏览: 62
c++ 构造函数中调用虚函数的实现方法
在C++中,构造函数是一种特殊的行为,它的目的是为了初始化对象。当你在构造函数内部调用虚函数(virtual function)时,这种行为被称为构造函数的静态绑定(static binding)。虽然通常构造函数不会直接用于动态派生,但是可以间接地通过成员初始izers列表来实现这一点。
例如:
```cpp
class Base {
public:
virtual void doSomething() { /* implementation in derived class */ }
};
class Derived : public Base {
public:
Derived() : Base() { // 在Derived的构造函数中,会先执行Base的构造函数
doSomething(); // 这里的doSomething是静态绑定,会在Base类中查找该方法
}
};
```
在这个例子中,虽然`doSomething()`是在构造函数中调用的,但因为是在构造过程中完成的,所以它会执行Base类中定义的那个虚函数。如果你期望在运行时动态选择实现,这将不起作用,因为静态绑定是在编译时确定的。
阅读全文