美文网首页
C++学习笔记1

C++学习笔记1

作者: 尚无花名 | 来源:发表于2020-05-04 14:42 被阅读0次

    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>的话,这些实际的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

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