zoukankan      html  css  js  c++  java
  • 设计与声明

    条款18:让接口容易被正确使用,不易被误用

      

    条款19:设计class犹如设计type

    条款20:宁以pass-by-value-to-const替换pass-by-value

      缺省情况下C++以by value方法给对象传递参数,函数参数都是对象的副本,这些副本是由对象的copy构造函数产出,这可能使得函数调用操作更加费时(一次copy构造函数的调用,函数结束时一次析构函数的调用)。

      可以将函数声明为下面的形式,这样将不会有任何额外的构造函数和析构函数的调用:

    void func (const Student& student)

      参数声明中的const是重要的,可以让调用者知道函数内不会对student做出任何修改。

      这种方法还可以避免参数作为其父类传入函数后,函数内仅仅留下父类对象的情况。

      这个规则并不适用于内置类型、STL的迭代器以及函数对象。

    条款21:必须返回对象时,别妄想返回其reference

      任何函数返回一个reference指向某个local对象结果都将是错误的,因为local对象在函数结束后就会被销毁。

    条款22:将成员变量声明为private

      

    条款23:宁以non-member、non-friend替换member函数

      non-member、non-friend函数能提供比member函数更高的封装性。

      封装的好处在于我们能改变事物而只影响有限的客户。可以粗略的说,越多函数可以访问到一个类,这个类的封装性越差。

      通常的做法是让non-member函数跟相对应的类放到同一命名空间下:

    namespace WebBrowserStuff {
        class WebBrowser { ... };
        void clearBrowser() { ... };
        ...
    }

    条款24:若所有参数皆需类型转换,请为此采用non-member函数

      

    条款25:考虑写出一个不抛异常的swap函数

      

  • 相关阅读:
    类数据源Visual C++对ODBC数据库资源的访问
    变量对话框MFC 关于控件变量的使用
    S3C2440上LCD驱动(FrameBuffer)实例开发讲解(二)
    设备内存缓冲区和 /proc/iomem
    multiplexed pins
    电脑硬件资源有冲突怎么处理?
    redhat open source university 硬件资源
    深入理解linux系统下proc文件系统内容
    S3C2440上LCD驱动(FrameBuffer)实例开发讲解(一)
    Framebuffer文章收集
  • 原文地址:https://www.cnblogs.com/yitong0768/p/4590982.html
Copyright © 2011-2022 走看看