xingkongyun
星空陨的程序小站
C++博客
首页
新随笔
联系
聚合
管理
随笔 - 8 文章 - 26 trackbacks - 0
<
2024年12月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
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
31
1
2
3
4
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(4)
给我留言
查看公开留言
查看私人留言
随笔档案
2009年12月 (1)
2009年9月 (1)
2009年4月 (1)
2008年12月 (1)
2008年11月 (1)
2008年10月 (2)
2008年9月 (1)
文章分类
C++语言(6)
Directx(1)
STL(2)
VC++
Windows编程(4)
操作系统(4)
数据结构(10)
文章档案
2008年11月 (1)
2008年10月 (3)
2008年9月 (10)
2008年7月 (1)
2008年6月 (13)
相册
图示
C++语言
C++的罗浮宫
搜索
最新评论
1. re: 卸载远程线程中的DLL
水平很高,学习了。
--王小亮
2. re: 卸载远程线程中的DLL
评论内容较长,点击标题查看
--疑问
3. re: NASM 与 VC 混合编程的小结
收下了
--5545645
4. re: VC++内联汇编(MSDN相关内容完整翻译)
谢谢
--5545645
5. re: 安全密码框的设计
评论内容较长,点击标题查看
--徐胖子
阅读排行榜
1. VC++内联汇编(MSDN相关内容完整翻译)(9241)
2. 保护模式与实模式的切换(7998)
3. 安全密码框的设计(4940)
4. NASM 与 VC 混合编程的小结(3894)
5. SYSENTER指令相关(大段的转载-_-)(3601)
评论排行榜
1. 通过虚函数表访问私有虚函数(10)
2. 安全密码框的设计(8)
3. 保护模式与实模式的切换(4)
4. VC++内联汇编(MSDN相关内容完整翻译)(1)
5. NASM 与 VC 混合编程的小结(1)
C++关键字之explicit
一个explicit关键字声明的构造函数禁止编译器进行隐式类型转换 .(
禁止单参数构造函数"被用于自动型别转换
)
参考如下代码:
1
#include
<
stdio.h
>
2
#include
<
iostream
>
3
4
using namespace std;
5
6
7
8
9
class
C
10
{
11
public
:
12
int
i;
13
C(
const
C
&
)
//
an copy constructor
14
{
15
printf(
"
\nin the copy constructor
"
);
16
}
17
explicit C(
int
i )
//
an explicit constructor
18
{
19
printf(
"
\nin the constructor
"
);
20
}
21
22
operator
int
()
const
//
classs ->int
23
{
24
printf(
"
\noperator int()
"
);
25
return
i;
26
}
27
28
C()
29
{
30
i
=
0
;
31
}
32
}
;
33
34
void
test_fun1(C obj);
35
void
test_fun2(
int
i);
36
void
test_fun3(C c);
37
38
39
int
main()
40
{
41
C c, d;
42
test_fun3(c);
//
c is copied
43
44
//
test_fun1(1);
//
错误,因为构造函数声明了explicit,所以禁止隐式转换
45
46
test_fun2(c);
//
call operator int()const
47
test_fun1(c);
48
cin.get();
49
return
0
;
50
}
51
52
void
test_fun1(C obj)
53
{
54
}
55
56
void
test_fun2(
int
i)
57
{
58
}
59
60
void
test_fun3(C c)
61
{
62
}
从网上看到这段代码:
1
#include
<
string
>
2
#include
<
iostream
>
3
4
using namespace std;
5
6
class
Number
{
7
public
:
8
string type;
9
10
Number(): type(
"
void
"
)
{ }
11
explicit Number(
short
) : type(
"
short
"
)
{ }
12
Number(
int
) : type(
"
int
"
)
{ }
13
}
;
14
void
Show(
const
Number
&
n)
{ cout
<<
n.type; }
15
void
f()
16
{
17
short
s
=
42
;
18
Show(s);
19
}
20
int
main()
21
{
22
f();
23
cin.get();
24
return
0
;
25
}
26
这段代码的返回值为:int,这里面起关键作用的就是那个explicit
posted on 2008-06-25 21:36
杨彬彬
阅读(182)
评论(0)
编辑
收藏
引用
所属分类:
C++语言
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
C++关键字之const
C++关键字之explicit
C++关键字typename(转载)
GetBuffer与ReleaseBuffer的用法,CString剖析---转载
C++ 枚举类型的思考
指针, 指针的指针, 数组, 指针数组, 数组指针, 指针函数, 函数指针
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理