虚函数(1)
来源:互联网 发布:ip网络数字广播 编辑:程序博客网 时间:2024/06/14 02:57
今天看c++编程思想中所讲的虚函数,看的不是很懂,网上查了一下,发现这个图比较易懂
也就是virtual int fun0();virtual int fun1();所以不管一个还是两个虚函数,他的基类大小都要增加一个指针类型大小 ,也就是 4字节。
还有就是这个
class A
{
public:
int fun()
{
cout<<"hello"<<endl;
return 0;
}
private:
int x;
};
class B :public A
{
private:
int j;
public:
int fun()
{
cout<<"world"<<endl;
return 0;
}
};
int fun1(A *c)
{
c->fun();
return 0;
}
int main()
{
A b;
b.fun();
B c;
c.fun();
fun1(&b);
fun1(&c);
return 0;
}
当基类中的fun不是虚函数石,fun1(&b);fun1(&c);都打印的hello,基类类型指针可以指向基类,也可以指向派生类。
但是当把基类中的fun函数变为虚函数,形如如下:
class A
{
public:
virtual int fun()
{
cout<<"hello"<<endl;
return 0;
}
private:
int x;
};
class B :public A
{
private:
int j;
public:
int fun()
{
cout<<"world"<<endl;
return 0;
}
};
int fun1(A *c)
{
c->fun();
return 0;
}
int main()
{
A b;
b.fun();
B c;
c.fun();
fun1(&b);
fun1(&c);
return 0;
}
fun1(&b);fun1(&c);所打印的hello 和 world。这就是虚函数的作用之一吧(本人也就是初学者)。当一个让一个基类类型指针指向派生类时,他所调用的函数如果在基类中是虚函数,则调用派生类中的同名函数,否则调用基类中的函数。
每天写一点,加深印象。
- 虚函数(1)
- C++虚函数(1)
- (1)为什么构造函数的名字用类名?(2)构造函数返回值问题;(3)析构函数和构造函数定义为虚函数;
- 虚函数深入挖掘-构造函数与虚函数【1】
- 虚函数和纯虚函数1
- C++虚函数(1) - 虚函数介绍
- 构造函数和一般函数(1)
- C++虚函数表(1)
- C++虚函数剖析(1)
- 虚函数复习1
- 虚函数原理1
- 虚函数练习1
- 虚函数1
- 虚函数测试1
- 虚函数(续)
- 虚函数(转)
- 虚函数(二)
- 虚函数(二)
- Hibernate中的cascade和inverse
- POJ1142
- UVa - 11997 - K Smallest Sums
- 精解C++的switch语句
- 浅议 Dynamic_cast 和 RTTI
- 虚函数(1)
- Mac 下安装cocos2d-x包时遇到的 permission denied 问题
- Android改变wifi状态必须要的权限
- 避免使用虚函数作为库的接口
- zjut1221 表达式个数
- -mwindows
- 深入new
- shared_ptr用法
- auto_ptr与shared_ptr --- auto_ptr