会员
周边
新闻
博问
闪存
众包
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
咖啡淡了
博客园
首页
新随笔
联系
管理
订阅
关于虚函数中变量值的问题(不解)
在一道面试题上看一个有虚拟函数的问题,本来问题与虚函数无关,自己做了下试验对一个问题不解。现在代码粘出,希望有人解答一下。
Code
1
#include
"
stdafx.h
"
2
using
namespace
std;
3
4
//
int atexit (void (*function)(void));
5
6
class
Base
7
{
8
public
:
9
Base()
{ }
10
~
Base()
{ }
11
12
virtual
void
g(
int
i
=
10
)
{;cout
<<
"
Base::g()
"
<<
i
<<
endl;}
13
virtual
void
g2( )
{
int
i
=
20
;cout
<<
"
Base::g2()
"
<<
i
<<
endl;}
14
}
;
15
16
class
Derived:
public
Base
17
{
18
public
:
19
Derived()
{ }
20
~
Derived()
{ }
21
22
virtual
void
g(
int
ix
=
101
)
{ ;cout
<<
"
Derived::g()
"
<<
ix
<<
endl;}
23
virtual
void
g2()
{
int
i
=
202
;cout
<<
"
derived::g2
"
<<
i
<<
endl;}
24
25
}
;
26
27
28
int
main( )
29
{ Base b;
30
Derived d;
31
Base
*
pb
=
new
Derived;
32
Derived
*
pd
=
new
Derived;
33
34
pb
->
g( );
35
pd
->
g();
36
pb
->
g2();
37
pd
->
g2();
38
39
return
0
;
40
}
输出为:Derived::g()10
Derived::g()101
derived::g2202
derived::g2202
这里不太明白的是第一个输出,调用的是Deriver 的cout,但是输出的却是base中的I的值,哪位能指点一二?
posted @
2009-07-24 21:09
没有血池的野兽
阅读(
275
) 评论(
2
)
收藏
举报
刷新页面
返回顶部
公告