0%

  1. 禁止拷贝(或其他操作)
    一般来说,对于普通的功能,我们不想要支持只需要不实现即可,但是对于赋值等操作,如果我们不实现,那么编译器会帮我们自动生成。所以我们可以通过将拷贝函数设定为private的方式来避免调用,然而这样还是可能会出问题,因为友元函数/类的存在,所以还是有机会调用这个函数,所以我们可以通过只声明而不定义拷贝函数,使得调用者在链接的时候报错,从而避免拷贝。

    C++11支持使用delete关键字来非常方便的实现上述功能

阅读全文 »

C++ primer 看到了智能指针什么的,并且之后的几章看的有点粗略,就没有做多少笔记,之后抽时间看,直接开始看effective c++

由于书中的每一个Item涉及到的内容还是很多的,所以在每一个Item当中又会分出几个小点进行记录

  1. 使用constenum以及inline而不是#define
    本节也可以被总结为,使用编译器而不是预处理器

    • const
      const#define最容易产生交叉的点在于对常量的定义,当我们想要定义一个常量的时候,我们可能使用以下两种方式

      1
      2
      3
      #define ASPECT_RATIO 1.653

      const double AspectRatio = 1.653;

      由于在编译的过程中,所有的ASPECT_RATIO将会被完全替换为1.653。如果我们使用的是一个基于符号表的调试器,那么我们可能根本不知道1.653从何而来,尤其是在使用他人编写的头文件中定义了该宏的时候。但是使用const单独定义一个常量将不会有这个问题。而且也有某种可能上,使用const所生成的代码要比使用#define得到的代码更少,因为预处理器的无脑替换,有可能在最终生成的.o文件中有很多重复的1.653,而使用const double按理来说不会超出一个.

阅读全文 »

  1. 成员便变量出现的顺序在成员函数之后,成员函数依然可以使用该成员变量,由于编译器是按照先成员变量再成员函数来处理的
  2. 成员函数默认为inline
  3. this是一个常量指针,指向的对象不是常量,不能对this本身进行修改
  4. structclass的区别在于默认访问权限不同,struct的默认访问权限为public,而class的默认访问权限为private
阅读全文 »

跳过了4,5两章,着实没有什么好记录的

  1. 函数传递默认为值传递,也就是传入的变量会被复制一遍,使用引用为引用调用,原变量会被直接传入,从而避免拷贝,在传入大型类或者容器的时候非常有必要。C中一般使用指针,但是C++中建议将指针都改为引用,但是需要注意的是如果传入的变量在函数调用过程中不会被改变,那么最好是传递一个常量引用

阅读全文 »

  1. 不应该在头文件中使用using,因为会改变所有引用该头文件的文件
  2. string变量的复制是拷贝不是仅仅复制引用
  3. string类型的size以及length方法没有任何区别,一开始只有length方法,后来为了兼容STL,所以引入了size方法
  4. 由于历史原因,c++中的字符串字面量的类型并不是string,但是string类型依然可以直接与字面量进行相加的操作,字面量会自动进行转换
阅读全文 »

  1. 现代的C++程序最使用nullptr而不是NULL由于NULL实际上是一个预处理变量,使用NULL进行初始化与使用0进行初始化没有区别,因为NULL会在预处理阶段被朴素的文本替换为0nullptr是C++11引入的新的字面量

  2. 个人觉得C/C++的变量声明其实算是设计上的失误?

    1
    2
    int *p1, v; // 其中p1为指向int的指针,而v只是简单的int变量,这时候可以认为*是和p在一起的
    const int * p; // p指向的是一个不能被改变的int值,这时候const可以认为是和int在一起的?

    个人认为理解记忆起来还是有点绕

阅读全文 »

之前看了几乎忘光了,并且似乎也没有全部看完?,这次看能不能趁着国庆这几天尽快过一遍

豆瓣介绍:

这本久负盛名的 C++经典教程,时隔八年之久,终迎来史无前例的重大升级。除令全球无数程序员从中受益,甚至为之迷醉的——C++ 大师 Stanley B. Lippman 的丰富实践经验,C++标准委员会原负责人 Josée Lajoie 对C++标准的深入理解,以及C++ 先驱 Barbara E. Moo 在 C++教学方面的真知灼见外,更是基于全新的 C++11标准进行了全面而彻底的内容更新。非常难能可贵的是,《C++ Primer 中文版(第5版)》所有示例均全部采用 C++11 标准改写,这在经典升级版中极其罕见——充分体现了 C++ 语言的重大进展及其全面实践。书中丰富的教学辅助内容、醒目的知识点提示,以及精心组织的编程示范,让这本书在 C++ 领域的权威地位更加不可动摇。无论是初学者入门,或是中、高级程序员提升,本书均为不容置疑的首选。

阅读全文 »