C++学习笔记1

C++, Operator overloading
C++没有单边继承, Java是单边继承.
Java的GC很恶心,不知道什么时候开始 . 可能就卡在那里了.

C++的iterator, Java里面不怎么用 .

immutability:

java用final
C++用const.
在语义上有什么区别.
java的final锁住的是reference. java要用unmodifiable list. Java的immutable是跟着class走的, 不提供可以改变的接口.
Java的变量名只是个名片. 这个地址不可以改变,
C++用const 直接实现了锁住了这个Instance, C++用instance variable实现.
C++有三种变量

  1. 引用
  2. 指针
  3. instance variable

Java如果是一个ArrayList的话,这些实际的object不一定存在heap上的一个连续地址上. java存的是Reference
C++的这些object是存在同一个连续地址上. 连续访问, 速度快, 但扩张就慢了, 但可以存指针. C++是存实体. 想用referece的话就用指针.

C++有很多知识点大部分人用不到.
C++的Exception用的很少, 经常被ban掉. 因为Exception这个特性不是一开始就有的.
Template meta-programming 非常难, 不用学. 但是不是指 C++ template, 这个还是很常用的.

C++的构造函数

C++的constructor, 变量初始化是在花括号之前完成的.

C++有两类 constructor特别臭名昭著.

  1. Copy constructor, (参数是另外一个 instance的常引用). 有default的Copy constructor. 可以Delete掉
    Student(const Student& student) = default;
    Student(const Student& student) = delete; 不让copy.
    = default;

shallow copy/deep copy

  1. Move Constructor 大部分时候就用default就好了 .
    如果什么都不写 既不写delete也不写 default.会怎么样?

你可能感兴趣的:(C++学习笔记1)