美文网首页
Effective C++ 让自己习惯C++

Effective C++ 让自己习惯C++

作者: nino天 | 来源:发表于2014-08-06 12:01 被阅读144次

1.C++可视为一个由相关语言组成的联邦,而不是单一语言。每一个次语言都有自己的规约,编程守则也视情况而变化。

  • C. C++仍然是以C为基础的。
  • Object-Oriented C++: 面向对象的设计。包括 类(构造函数,析构函数),封装,继承,多态,动态绑定(虚函数)..
  • Template C++:C++泛型编程(template)..
  • STL:标准模板库,对容器,迭代器,算法以及函数对象的使用

2.最好以const对象,enum hack替换预编译#define.对于形似函数的宏,最好改用inline函数而不是#define.

3.const的使用

  • const 出现在*左边表示 被指物是常量,出现在*右边是说指针是常量
    <pre>const int * pc; //表示被指为常量
    int const * pc; //同上
    int* const pc; // 表示指针为常量不能修改</pre>

<pre> const iterator 代表T* const
const_iterator 代表 const T*</pre>

  • 使用const声明可以让编译器侦测出一些错误用法。

  • 编译器强制实施bitwise constness,但编写程序仍然要小心注意conceptual constness.
    <pre>mutable可以释放non-static成员变量的bitwise constness约束,使其能在const成员函数中被赋值

  • const和nonconst成员函数有着实质等价的实现时,用nonconst版本去调用const版本可以避免代码重复
    <pre>char & operator[] (std::size_t position)
    { return
    const_cast<char &>(
    static_cast<const TextBlock&>(*this)[position] );
    }</pre>

    以上实施了两次转换,首先将*this的原始类型转换成const,然后从const operator[]的返回值中移除const。

4.确定对象被使用前初始化

为内置类型进行手工初始化,因为C++不能保证初始化他们。
构造函数最好使用成员初始化列,而不是在构造函数本体内使用赋值操作。比如下面的numTimesConsulted是一个int类型,这里必须手工初始化他们,而其他的类型可以调用各自的赋值构造函数(copy constructor)去进行初始化。如果在本体内进行初始化,实际上是要首先调用default构造函数去为成员变量设初值,然后立刻再对他们赋予新值。
<pre>
Entry::Entry(const string& name, const string& address,
const list<PhoneNumber>& phones)
: theName(name),
theAddress(address),
thePhones(phones),
numTimesConsulted(0)
{}</pre>

相关文章

  • 2018-09-16

    Effective c++第三版 让自己习惯C++ 条款01:视C++为一个语言联邦 C++是一个同时支持过程形式...

  • Effective C++ 让自己习惯C++

    1.C++可视为一个由相关语言组成的联邦,而不是单一语言。每一个次语言都有自己的规约,编程守则也视情况而变化。 C...

  • 要读的书书名

    1, 重读《Effective C++》《 More Effective C++》《by Scott Meye...

  • C++ ---- 条款

    摘抄自Effective C++ 改善程序与设计的55个具体做法(第三版 中文版) 让自己习惯C++ 条款01:视...

  • 《Effective C++》的做法原理剖析

    在本篇文章中,会去写一些小实验,以实现Effective C++中提到的一个原则。 让自己习惯C++ 1.视C++...

  • 任务列表

    C++ 《C++ primer》、《STL源码解析》、《effective C++》、《深度搜索c++对象模型》 ...

  • 【Effective C++(1)】让自己习惯C++

    01 视C++为一个语言联邦 一开始C++只是C加上OOP特性,但随着C++成熟就不再只是C with class...

  • Effective C++ 1: 让自己 习惯 C++

    part1 让自己 习惯 C++ 1 视 C++ 为 1个 语言联邦 2 尽量以 const / enum / i...

  • C++笔记

    C++相关书籍:C++ primer,c++标准程序库,Effective C++(Scott Meyers),C...

  • Effective C++汇总

    Effective C++ 视 C++ 为一个语言联邦(C、Object-Oriented C++、Templat...

网友评论

      本文标题:Effective C++ 让自己习惯C++

      本文链接:https://www.haomeiwen.com/subject/bzhetttx.html