大胖的部落格
Just a note
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
<
2009年6月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Algorithm(13)
(rss)
C#(13)
(rss)
C++(22)
(rss)
Design Pattern(23)
(rss)
Others(14)
(rss)
STL(9)
(rss)
Technical(2)
(rss)
UML(2)
(rss)
Win32(18)
(rss)
Reference
Windows XP command line
最新评论
1. re: 在TCL命令行中调用C函数
@Kenny
实在不好意思,时间太过久远,本人已好久没有接触TCL……
--大胖
2. re: 在TCL命令行中调用C函数
請問如何溝通array 變數
Q:1
tcl array in C
Q:2
C array in tcl
懇求指導
--Kenny
3. re: 在TCL命令行中调用C函数
谢谢!
--1232
override, overload, hide
overload
重载,在同一个类中,函数名相同,参数不同,与virtual和返回值无关。
override
覆盖,重写,在继承关系的类中,函数名相同,参数相同,有virtual关键字,返回值必须相同。
hide
隐藏,用子类对象无法调用父类。
函数在继承关系的类中,函数名相同,参数不同,不管有没有virtual,父类函数都被hide
参数相同,无virtual,父类函数被hide。
同参,有virtual
同参,无virtual
不同参,与virtual无关
基类指针指向子类对象
override,调用子类函数,多态
调用父类函数,静态类型调用
调用父类函数OK,静态类型调用
调用子类函数出错,基类中没有该函数
子类对象
调用子类函数,静态类型调用
调用子类函数,无法调用父类同名函数,hide
调用父类函数出错, hide
调用子类函数OK,静态类型调用
如下示例中,当用子类对象调用函数时,注释掉的部分是调用父类函数出错的hide,还有调用子类函数的hide。
用基类引用调用函数时,注释掉的部分是子类特有函数,基类引用识别不了。
#include
<
iostream
>
using
namespace
std;
class
A
{
public
:
void
a ()
{cout
<<
"
A::a()
"
<<
endl;}
void
a (
int
)
{cout
<<
"
A::a(int)
"
<<
endl;}
virtual
void
b ()
{cout
<<
"
A::b()
"
<<
endl;}
virtual
void
b (
int
)
{cout
<<
"
A::b(int)
"
<<
endl;}
virtual
void
d (
int
i
=
10
)
{cout
<<
"
A.d:
"
<<
i
<<
endl;}
}
;
class
B:
public
A
{
public
:
void
a ()
{cout
<<
"
B::a()
"
<<
endl;}
void
a (
int
,
int
)
{cout
<<
"
B::a(int, int)
"
<<
endl;}
void
b ()
{cout
<<
"
B::b()
"
<<
endl;}
void
b (
int
,
int
)
{cout
<<
"
B::(int, int)
"
<<
endl;}
void
c ()
{cout
<<
"
B.c
"
<<
endl;}
void
d (
int
i
=
20
)
{cout
<<
"
B.d:
"
<<
i
<<
endl;}
}
;
int
main()
{
B b;
b.a();
//
hide,调用的是B的a
//
b.a(1);
//
非法,B中的a将A中的a全部hide了,与参数和virtual关键字无关
b.a(
1
,
1
);
//
静态类型,调用的是B的函数
b.b();
//
hide,调用的是B的b
//
b.b(1);
//
非法,B中的b将A中的a全部hide了,与参数和virtual关键字无关
b.b(
1
,
1
);
//
静态类型,调用的是B的函数
A
&
rb
=
b;
rb.a();
//
静态类型,调用的是A的函数
rb.a(
1
);
//
静态类型,调用的是A的函数
//
rb.a(1,1);
//
非法,B中的overload,B特有的函数,A里没有定义
rb.b();
//
override,有virtual关键字,名字和参数相同
rb.b(
1
);
//
没有override,调用的是A的函数
//
rb.b(1,1);
//
非法,B中的overload,B特有的函数,A里没有定义
return
0
;
}
posted on 2009-06-11 21:42
大胖
阅读(463)
评论(0)
编辑
收藏
引用
所属分类:
C++
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
补码
带引用计数的智能指针(模板类)
虚基类、虚函数,对象内存分布
template
override, overload, hide
继承
基类中的虚函数
继承关系中的二义性
虚基类
C/C++关键字
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 大胖