a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 69|回复: 0

[C++] 2011年计算机二级C++辅导实例编程(8)

[复制链接]
发表于 2012-7-31 21:56:58 | 显示全部楼层 |阅读模式
  C++重载类型转换操作符(type cast operator)5 H% W2 R5 G4 Z0 \+ u
  boost::ref和boost::cref使用了重载“类型转换(type cast)”操作符来实现使用引用类型来替换模版参数,本文就介绍一下这种操作符的重载方法。
- f% i6 r8 q8 C" l; j( H$ o5 a  函数原型
! V1 |5 d) i: I4 Z$ z& m  T1::operator T2() [const];   //T1的成员函数,重载"(T2)a"操作符: m: O- N7 m) \$ d5 S
  1. 类型转换重载函数的返回值是隐含的,并且不能显示声明,返回值是与转换的类型相同的,即为上面原型中的T2。- t+ o4 L3 |( @/ Q! k- b" Q( X
  2. 不能有参数;6 G: y( m' P* Q: ]
  3. 支持继承,可以为虚函数;
+ v. v6 p5 M% @7 X  4. 支持使用typedef定义的类型;
7 M8 b6 l6 V6 f, T7 I& }  先通过一个简单的例子来说明如何使用类型转换重载' a  E! |  ~9 z  R) h
  1 #include
6 k4 C) Q* O, }9 \7 d  2
' H; u  ^) X; s( j0 \. P% N  3 class D {  S' @9 K- l, L( `' H( }
  4 public:3 P; J# D" |6 B5 G4 ^$ R
  5 D(double d) : d_(d) {}( o; c+ {0 T& o# f
  6
; t* O# h1 I! {0 B5 R  7 /* 重载“(int)D” */
* {3 g! s) D3 ]7 k9 z/ X  8 operator int() const {
, J2 {! K, Z$ P$ @* j  9 std::cout
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-4 00:50 , Processed in 0.185959 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表