美文网首页
Coursera C++ Part A [Week3] Clas

Coursera C++ Part A [Week3] Clas

作者: 小啾Kris | 来源:发表于2019-09-30 21:56 被阅读0次

    [Week3] C++ Part A, University of Santa Cruz

    本周内容:

    • 构造函数和初始化列表
    • 动态内存分配与析构函数
    • 复制构造函数与深层复制
    • 链表
    • STL vector

    推荐参考书

    • C++ for C Programmers, ch. 6-7
    • C++ by Dissection, ch. 4-6

    教授貌似是德国人,讲着讲着冒出德语仿佛回想起了当年被德语支配的恐惧,太可爱啦

    1.构造函数与析构函数

    1.1 默认构造函数: 参数表为空的构造函数

    class classA{
    public:
        classA(): {}   // default constructor
    };
    

    1.2 initializer list syntax:

    class classA{
    public:
        classA(x, y): x(x), y(y){}   // constructor with initializer list 
    private:
        const int x, y;
    };
    

    类中的const成员变量必须在初始化列表中初始化,不能在函数体中初始化
    1.3 使用this指针初始化

    class classA{
    public:
        classA(x, y): { // constructor with this
            this->x = x;
            this->y = y;
         }   
    private:
        int x, y
    };
    

    当参数名称和类成员变量名称一样的时候,this pointer可以用来解决ambiguous问题。 However initializing syntax is preferred.

    构造函数也可以进行类型转换,此时它只有一个参数,提供的基本功能与static_cast相同。
    好的程序员会在编写构造函数的时候加入正确性检查。

    2. 动态内存分配与析构函数

    在C++中动态内存分配与回收的关键字是new和delete。与Java不一样的是,C++不会自动进行垃圾回收,所以使用的时候要非常小心,不过效能更高。

    char* s = new char[size]; //get off heap
    int* p = new int(9); // single int initialized
    delete [] s; // delete an array
    delete p; // delete single element
    

    当用new在创建对象的时候,要立即想到编写析构函数

    class classA{
    public:
        ~classA(){}
    }
    

    析构函数不可以重载,只能有一个,调用时也不加参数

    3. 复制构造函数与深层复制

    深层复制与浅层复制对应。
    浅拷贝:将原对象的引用直接赋值给新对象,新对象只是原对象的引用。对新对象对修改会直接影响原对象
    深拷贝:创建一个新对象,将原对象各项的值复制过来。修改新对象不会影响原对象

    4.链表

    STL中有链表,不赘述。
    空指针:nullptr,用nullptr比用NULL和0更好

    5. STL list and vector

    C++标准库中也有list,当你创建一个list的时候会得到一个双向链表,可以快速插入删除节点

    #include <list>
    list<type> name
    

    C++标准库中的vector,可以快速地随机访问

    #include <vector>
    vector<type> name(size); //创建向量
    

    相关文章

      网友评论

          本文标题:Coursera C++ Part A [Week3] Clas

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