对于c++虚函数的理解
2014-06-13 13:52
239 查看
虚函数的定义,课本上讲的很明白,看了这个例子就一切都懂了
class Base
{
private:
int mNumber;
public:
Base(int i){mNumber =i;}
virtual void print( ) {cout << b_number << endl;}
};
class Derived : public Base
{
private:
int mNumber;
public:
Derived( int i) : Base(i){ };
void print( )
{
cout << 2*mNumber<< endl;
}
};
那么用Base的实例调用print,输出的就是i的值,用Derived的实例调用print,输出的就是2*i的值
简单地说,虚函数总是指向最后一个实现它的类。
可在使用中出现了问题:虚函数在基类构造函数中调用,不管重写多少次,基类都会运行原有的!
这可能是因为在子类初始化时同时调用了基类的构造函数,而基类的构造函数一定不会被覆盖。
就记住好了,使用虚函数最好不要在构造函数中使用。
class Base
{
private:
int mNumber;
public:
Base(int i){mNumber =i;}
virtual void print( ) {cout << b_number << endl;}
};
class Derived : public Base
{
private:
int mNumber;
public:
Derived( int i) : Base(i){ };
void print( )
{
cout << 2*mNumber<< endl;
}
};
那么用Base的实例调用print,输出的就是i的值,用Derived的实例调用print,输出的就是2*i的值
简单地说,虚函数总是指向最后一个实现它的类。
可在使用中出现了问题:虚函数在基类构造函数中调用,不管重写多少次,基类都会运行原有的!
这可能是因为在子类初始化时同时调用了基类的构造函数,而基类的构造函数一定不会被覆盖。
就记住好了,使用虚函数最好不要在构造函数中使用。
相关文章推荐
- c++对于虚函数,纯虚函数,普通函数的理解
- c++ is on the way 6——对于内联函数的理解
- 对于C++虚表的理解
- C++学习之深入理解虚函数--虚函数表解析
- C++学习之深入理解虚函数--虚函数表解析
- 从汇编角度理解C++虚函数调用机制
- [转]理解C++虚函数绝好的文章
- 对于c++中流操作符重载的理解
- 【C++】虚函数 多态 再理解
- 对于c++面向对象的深刻认识和理解--哲学角度看问题(源生论)
- 理解C++虚函数
- 对于C++保护继承方式的一点理解
- C++虚函数这玩意儿的理解
- 对 c++多态性和虚函数的理解
- deep_c++::多态,虚函数的一点理解
- C++:对于class来说,什么函数可以在class里面定义,什么函数最好在class外面定义(我的理解)
- 深入理解C++重载、多态、虚函数
- 深入理解c++虚函数
- 一个例子理解 C++ 面向对象——构造函数、虚函数、抽象基类
- C++中关于虚函数与虚函数表的理解