Coursera C++ Part A [Week1]基础概念与特性

最近在学VC++,发现C++已经忘光了,码代码的过程中遇到了不少坑,重新从网上找个网课看一遍复习总结一下。

选择了Cousera上UC, Santa Cruz开的C++课程,部分课程有中文字幕,其他只有英文字幕,不过教授口音非常清晰不用字幕就可以听的很清楚。该课程是提供给有C基础的同学,如果没有学过C建议选择其他课程作为入门,课程分为AB两部分,每节课后有简单的小程序熟悉本周学过的知识。课程网站
C++ Part A https://www.coursera.org/learn/c-plus-plus-a/home/welcome
C++ Part B https://www.coursera.org/learn/c-plus-plus-b/home/welcome

Part A

week1 Overview

Avoiding the preprocessor

    预处理命令:#include
    使用命名空间( 类似于python使用包):using namespace std; 如果没有using指令,使用函数如cout则需要写为 std::cout, 这种写法使得程序使用多种命名空间
    常量const:取代了C中的宏定义,声明时必须进行初始化(类中不用)。C的宏定义是在   预处理的时候进行的,此处用const常量代替macro,相当于用语言规则代替预处理器,不容易出错。用const声明的变量虽然增加了分配空间,但是可以保证类型安全
    内联函数inline:用来代替C中用macro写的内联代码。inline相当于一个编辑器指令,告诉编辑器这里有一段代码,这样编辑器在在进行编译的时候就会将整个函数体的代码插人调用语句处而不是编译成函数的调用,避免了函数调用的过程产生的时间开销。
    随机初始化函数: srand(clock())

Use of type safe input/output

    输出:cout是一个ostream,代替了C中printf,cout<<变量名称<    输入:cin是一个istream,代替了scanf, cin>>变量名称

Memory Allocation

    new 代替 malloc
    delete 代替 free

类型转换与安全性

    static_cast< new_type >(expression) 类似C的强制类型转换
    ①用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换。
        进行上行转换(把派生类的指针或引用转换成基类表示)是安全的;
        进行下行转换(把基类指针或引用转换成派生类表示)时,由于没有动态类型检查,所以是不安全的。
    ②用于基本数据类型之间的转换,如把int转换成char,把int转换成enum。
    ③把空指针转换成目标类型的空指针。
    ④把任何类型的表达式转换成void类型。

    注意:static_cast不能转换掉expression的const、volatile、或者__unaligned属性

    Safety:
    In C the type of data is interpret as a certain bit configuration, so programmer could easily change it at a low level. In C++, the safety can be caught by compiler using language rules that enforcing type safety. 我的理解是C++不能随便进行类型转换,要强制性地定义转换规则

C++引用的调用reference

    格式:type& new_variable = variable
    相当于给已经存在的变量起了一个别名,而不是重新开辟内存空间生成拷贝

Generics泛型

    格式
    template
    void function_name(T1 a, T2 b){}

week2 Overview
    Review Dijkstra's shortest path algorithm
    C++ functions and generics
    C++ classes and OO
    Point as an example

week3 Overview
    Point: Default constructor and initializing syntax
    Conversion constructors
    Copy constructor
    List and dynamic memory allocation
    Deep copy

week4 Overview
    Prim's and Kruskal's algorithms
    Use of basic container classes
    Tripod-container, iterator algorithm

你可能感兴趣的:(Coursera C++ Part A [Week1]基础概念与特性)