上一篇:C++/CLI思辨录之内部指针的两面性 >>
C++/CLI思辨录之代理构造函数
| 天极软件专题专区精选 | ||
| Google专区 | POPO专区 | QQ专区 |
| Flash MX 视频教程 | Photoshop视频教程 | 网页设计视频教程 |
| PowerPoint动画演示教程 | Excel动画教程集 | Word动画演示教程 |
| 特洛伊木马专区 | 黑客知识教程专区 | 注册表应用专区 |
| Windows API开发专区 | 网络编程专区 | VB数据库编程专区 |
| 图像与多媒体编程 | ||
现在我们讨论一下新的C++/CLI环境下的一个很酷的特性,称作代理构造函数。
对一个类来说,有多个构造函数是经常的事;并且这多个构造函数有一段共同的代码也很经常。一般地,在这种情况下,我们都是为该共同代码段编写一个独立的函数,然后放在每个构造器中调用。如下例:
| class Foo { private: int _mem; public: Foo() : _mem(0) { CommonConstructor(); } Foo(int mem) : _mem(mem) { CommonConstructor(); } Foo(const Foo& f) : _mem(f._mem) { CommonConstructor(); } // 我们所有的构造器都需要的代码段 void CommonConstructor() { printf("Constructing the object"); } }; |
但是现在利用C++/CLI引入的新特性-代理构造器,我们可以从一个称为基类构造器的构造器中调用另一个构造器。当你这样做时,执行控制转入到第二个构造器中,在其执行完后再返回到第一个构造器。下面代码片断中的类Foo2演示了这种方法:
| class Foo2 { private: int _mem; public: // 该构造器调用第二个称为基类构造器的构造器 Foo2() : Foo2(0) { } // 下面这个构造器包含由所有构造器使用的公共代码 Foo2(int mem) : _mem(mem) { printf("Constructing the object"); } Foo2(const Foo2& f) : Foo2(f._mem) { } }; |
然而,每个类都应该包含至少一个非代理构造器,不过该构造器仍然可以有调用一个或者多个基类构造器的初始化操作。
注意,早期情况下,如果你想试用一下代理构造函数,应该会出现一个编译错误。请注意,这是由于资源问题缺乏导致的,在现在版本的C++/CLI中可以避免这一错误。
下一篇:C++/CLI思辨录之拷贝构造函数 >>
相关文章:
- · 叩开C#之门系列之C#与面向对象编程语言
- · C# 2.0 套接字编程实例初探
- · 叩开C#之门系列之几个重要名词
- · 炮打“华军司令部”,“迅雷”的一张大字报
- · C#+低级Windows API钩子拦截键盘输入
- · 在C#中动态调用native dll的导出函数
- · C#3.0新特性之隐式类型局部变量的使用
- · 试用报告:笔记本中体验win vista的魅力
- · 用C#实现HTTP协议下的多线程文件传输
- · windows vista 5466细节全览(多图)
- · 性能更佳 微软发布vista最新测试版5466
- · 如何在C#中播放AVI短片并使背景透明
- · 主流测试:vista你为游戏准备好了吗?
- · windows xp和vista双系统安装不完全攻略
- · 用C#开发Windows服务监控系统使用
- · C#中父窗口和子窗口之间实现控件互操作
- · Visual C# 2.0泛型编程基础
- · Visual C#泛型学习之泛型介绍
- · 为非主流主机优化 打造最强vista 5456
- · C#与松下FP∑可编程控制器的通信
- · 谈谈购买win vista的十大理由及放弃原因
- · Visual C#使用DirectX实现视频播放
- · Visual C#程序员面试基础问题和答案
- · 用户需注意!选购“vista笔记本”要谨慎
- · intel透露最新windows vista认证要求
- · 比xp做得更好:寻找windows vista漏洞
- · 通过包技术扩展Visual Studio 2005
- · 手动快速卸载windows vista系统的方法
- · .Net Framework3.0 实践纪实之布局
- · 观点:.NET发展中的几个失误
- · sata串口硬盘windows vista驱动安装实录
- · 基于AJAX.NET技术的DataGrid控件开发
- · 在.NET下多层架构企业管理系统的开发
- · windows vista系统应用程序安装测试情况
- · vista显存需求有大学问 intel老大将不保
- · 在.net中利用委托实现窗体间通信
- · 抛弃win xp!细数升级vista的五大理由
- · 激活windows vista 启动logo画面
