• 稍微记录一下effective c++的一些东西


    纸上学来总觉浅,绝知此事要躬行。

    书还没看完,,第一遍过到现在,感觉都忘记了,没写过代码,总觉得差很多,以后有机会一定每条实践过去。

    多使用const
    const出现在星号左边,表示被指物是常量,右边表示指针自身是常量

    const成员函数:http://blog.sina.com.cn/s/blog_4dd77fd10100lug5.html
    (const对象只能访问const成员函数)

    const Rational operator* (const Rational& rhs) const;
    返回一个const by-value 接受reference-to-const

    C++转型:
    const_cast
    static_cast

    http://blog.csdn.net/xiaobo620/article/details/7397743


    Widget& operator=(const Widget& rhs)
    {
    return* this;
    }

    mutable

    条款三:在使用对象之前将它初始化

    总是在初值列中列出所有成员变量。

    使用local-static代替non-local-static
    http://blog.csdn.net/insistgogo/article/details/9427389

    智能指针,类似于python的垃圾清除器:
    std::auto_ptr //只允许一个对象访问
    std::tr1::shared_ptr
    手工释放资源时会出错,建议使用资源管理的类<资源取得时机便是初始化时机>(RAII)

    explicit


    不要执着于单语句,对于RAII来说 原因:

    C++中函数形参之间创建产生的时间顺序是按照效率来的,
    std::tr1::shared_ptr<xxx>(new xxx),test()

    如果顺序如下
    new
    test
    shared_ptr传参。

    test出错那么shared_ptr自然也就炸了。资源泄露。

    尽量以pass-by-reference-to-const 替换 pass-by-value

    static对象设计(威胁)->多线程安全性?

    不封装就难以改变(威胁到客户码)


    面向对象守则,数据要尽可能封闭
    封装的越厉害,对其封装的改变量就越大。

    namespace xxx{


    }

    宁已non-member non-friend函数替换member函数


    只有当参数被列于参数列内,这个参数才是隐式类型转换的合格参与者。

    可以根据需求将std::swap特化


    std::vector<std::tr1::shared_ptr<Windows>> VPW (使用类型安全容器)

    尽量避免dynamic_casts转型

  • 相关阅读:
    Java练习 标准输入,输出,以及switch判断
    Java练习 标准输入,输出,以及if else判断
    Java 语句和流程控制
    Java的运算符,Java的表达式
    理解 Linux 的硬链接与软链接(转)
    第一范式、第二范式、第三范式详解(转自知乎)
    TCP/IP协议图解
    POSIX条件变量
    自旋锁与读写锁
    POSIX信号量与互斥锁实现生产者消费者模型
  • 原文地址:https://www.cnblogs.com/You0/p/4645924.html
Copyright © 2020-2023  润新知