Shuffy

不断的学习,不断的思考,才能不断的进步.Let's do better together!
posts - 102, comments - 43, trackbacks - 0, articles - 19

     摘要: Windows和MFC的include文件都非常大,即使有一个快速的处理程序,编译程序也要花费相当长的时间来完成工作。由于每个.CPP文件都包含相同的include文件,为每个.CPP文件都重复处理这些文件就显得很傻了。
为避免这种浪费,AppWizard和VisualC++编译程序一起进行工作  阅读全文

posted @ 2007-09-09 13:36 Shuffy 阅读(4384) | 评论 (0)编辑 收藏

     摘要: (1) 计算机系统分类。
·指令流:机器执行的指令系列。
·数据流:由指令流调用的数据序列。
·Flynn分类法:单指令流单数据流,指令流多数据流,单指令流多数据流,多指令流单数据流。
·冯式分类法:用最大并行度来对计算机体系结构进行分类。  阅读全文

posted @ 2007-09-04 17:26 Shuffy 阅读(1251) | 评论 (1)编辑 收藏

     摘要: 使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。  阅读全文

posted @ 2007-09-02 17:10 Shuffy 阅读(315) | 评论 (0)编辑 收藏

     摘要: 铭记在心

l 定义变量的时机越晚越好。这可以提高程序的清晰度和工作效率。
  阅读全文

posted @ 2007-09-02 16:04 Shuffy 阅读(220) | 评论 (0)编辑 收藏

     摘要: 铭记在心

l 在对你的类型使用 std::swap 时可能会造成效率低下时,可以提供一个 swap 成员函数。确保你的 swap 不要抛出异常。

l 如果你提供了一个 swap 的成员函数,那么同时要提供一个非成员函数 swap 来调用这一成员。对于类而言(而不是模板),还要提供一个 std::swap 的特化版本来调用 swap 成员函数。

l 在调用 swap 时,要为 std::swap 使用一条 using 声明,然后在调用 swap 时,不要做出名字空间的限制。

l 对用户自定义类型而言,提供 std 的完全特化版本不成问题,但是决不要尝试在 std 中添加全新的内容。
  阅读全文

posted @ 2007-09-02 15:57 Shuffy 阅读(387) | 评论 (0)编辑 收藏

     摘要: 一、从控制台读取东西代码片断:
using System;

class TestReadConsole
{
public static void Main()
{
Console.Write("Enter your name:");
string strName = Console.ReadLine();
Console.WriteLine(" Hi "+ strName);
}
}  阅读全文

posted @ 2007-08-31 12:34 Shuffy 阅读(214) | 评论 (0)编辑 收藏

     摘要: Mutable 数据成员的使用看上去像是骗术,因为它能够使 const 函数修改对象的数据成员。然而,明智地使用 mutable 关键字可以提高代码质量,因为它能够让你向用户隐藏实现细节,而无须使用不确定的东西  阅读全文

posted @ 2007-07-13 20:13 Shuffy 阅读(485) | 评论 (0)编辑 收藏

     摘要: 在过去留下来的程序代码和纯粹的C程序中,传统的形式的转换伴随了我们很长的一段时间。但是,如文中所述,基于stringstream的转换拥有类型安全和不会溢出这样抢眼的特性,使我们有充足得理由抛弃而使用库还提供了另外一个特性—可扩展性。你可以通过重载来支持自定义类型间的转换。  阅读全文

posted @ 2007-07-13 19:47 Shuffy 阅读(191162) | 评论 (30)编辑 收藏

     摘要: l 如果你需要对一个函数的所有参数进行类型转换(包括 this 指针所指向的对象),那么它必须是一个非成员函数。
  阅读全文

posted @ 2007-07-13 19:04 Shuffy 阅读(254) | 评论 (0)编辑 收藏

     摘要: 面向对象的基本原理要求数据和对其进行操作的函数应该被包装在一起,同时建议成员函数为更优秀的选择。但不幸的是,这一建议并不是正确的。它是建立在对“面向对象的东西意味着什么”这一点的误解之上的。通过理性分析可以得知,成员函数 clearEverything 的封装性实际上比非成员函数 clearBrowser 还要差。还有,非成员函数可以为 WebBrowser 相关的功能提供更便利的打包方法,从而减少编译时依赖,提高 WebBrowser 的可扩展性。很多情况下,非成员函数的方法都比成员函数的方法要好。理解这一结论的原因是十分重要的。  阅读全文

posted @ 2007-06-26 13:24 Shuffy 阅读(245) | 评论 (0)编辑 收藏

     摘要: 好吧,直截了当的说,在这一条中:我们首先要分析为什么数据成员不应该是公有的,与此同时,继续分析为什么数据成员也不能是 protected 的。然后就引出本条款的结论:数据成员必须是私有的。  阅读全文

posted @ 2007-06-26 13:20 Shuffy 阅读(266) | 评论 (0)编辑 收藏

     摘要: 一旦程序员把注意力都转向了对象传值方式隐含的效率问题(参见第 20 条)时,许多人都变成了极端的“改革运动者”,他们对传值方法采取斩草除根的态度,在他们不屈不挠追求传递引用方式的纯粹性的同时,他们也犯下了致命的错误:有时候传递的引用所指向的对象并不存在。这决不是一件好事情。   阅读全文

posted @ 2007-06-26 13:17 Shuffy 阅读(157) | 评论 (0)编辑 收藏

     摘要: 默认情况下, C++ 为函数传入和传出对象是采用传值方式的(这是由 C 语言继承而来的特征)。除非你明确使用其他方法,函数的形式参数总会通过复制实在参数的副本来创建,并且,函数的调用者得到的也是函数返回值得一个副本。这些副本是由对象的拷贝构造函数创建的。这使得“传值”成为一项代价十分昂贵的操作。  阅读全文

posted @ 2007-06-26 13:14 Shuffy 阅读(196) | 评论 (0)编辑 收藏

     摘要: 与其它的面向对象编程语言类似,在 C++ 中,定义一个新的 class 便会引入一个新的类型的定义。一个 C++ 设计人员的大多数时间都会用在不断丰富充实他们的类系统上。这意味着他不仅仅是一个 class 的设计者,而且是一个类型的设计者。  阅读全文

posted @ 2007-05-27 10:16 Shuffy 阅读(174) | 评论 (0)编辑 收藏

     摘要: C++ 中到处充满了接口。函数接口、类接口、模板接口,等等。每个接口都是实现客户端程序员与你的代码相交互的一种手段。假设你的客户通情达理,他们的项目也十分优秀,他们便会十分看重你的接口是否易于正确使用。这是千真万确的,如果他们误用了你的接口中的任一个,那么你也难推其咎。  阅读全文

posted @ 2007-05-27 10:14 Shuffy 阅读(261) | 评论 (0)编辑 收藏

仅列出标题
共7页: 1 2 3 4 5 6 7