• C++初步学习


    一. C与C++的基本区别:C语言简单,但是使用比较复杂,C++语法较难,注重思想,使用简单(面向对象)

      a. 头文件:
        C++标准库的头文件不带.h,最常用的是iostream
        C语言的头文件依然可以继续使用,stdio.h或cstdio

      b. 输入输出

        cout<<  输出
        cin >> 输入
        endl;换行;
        cout 和不再使用占位符,他可以自动识别占位符
        scanf和printf可以继续使用

      c.

        引入了名字空间概念
        using namespace std; 

    二.C++中的数据类型
    1. C++完全兼容C语言中的所有数据类型(C++兼容C语言的所有语法)
    2. 添加了bool类型,字节数是1,数值true(非0),false(0);
    3. 在显示bool变量前,使用boolalpha可以以true或false的形式现实bool的值
    4. void* 与其他类型指针的转换受到限制
    void* 不可以直接给其他类型的指针赋值,必须经过强制转换
    任意类型的指针都可以直接给void*赋值

    三.C++中的联合,枚举,结构
    1. 在C++中的这些一旦设计成功,在之后的使用不需要加关键字
    2. 枚举的检查更为严格(C++中的枚举是一种独立的数据类型)
    3. 结构成员中可以有函数,在函数中可以直接访问他的成员,
    4. 结构对象可以继续使用.或->访问成员,成员函数。
    5. 结构中的成员添加了访问属性:
    public :开放的,被他修饰过的成员在人和位置都可以访问
    private:私有的,被他修饰过的成员只能在成员函数中使用
    protected:

    6. 结构体在创建的时候会自动调用一个函数-构造函数;
    a. 没有返回值
    b.名字与结构相同
    c. 参数可以任意
    7. 结构体在创建的时候会自动释放一个函数-析钩函数;
    a. 无返回值,参数
    b.~结构名


    四. 引用
    1. 引用就是起别名,起"外号",为一个标识符另外再起一个名字
    2. 引用必须初始化,
    3. 引用不光可以引用标识符,也可以引用立即数(右值,字面值,常量),但必须加const属性
    4. 不能定义空引用,"野引用"或"悬空引用"是存在的(引用推内存的数据,当堆内存释放后就不应该再使用)。
    5. 引用只能是一次性的,无法再更改(引用一旦成功之后,他就是一个变量了,这个身份至死不渝)
    6. 引用也可以当作函数的参数,他引用的对象就是函数的实参,引用可以达到指针的效果
    a.函数之间共享变量
    b.提高参数的传递效率(比指针还要高)
    c.当参数来使用
    注意:能使用引用就不要再使用指针了
    引用不可以取代指针;
    7. 应用也可以当作函数的返回值,但绝不能返回局部变量的引用


    五.C++中的内存管理运算符
    1. 在C++中使用new/delete来管理内存
    2. new在内存时允许对内存进行初始化
    3. 使用new创建结构对象时会自动调用构造函数,delete时会自动调用析构函数

    总结:
    1. malloc/free是标准库里的函数,使用时需要添加头文件,new/delete是C++语言中的运算符
    2. malloc返回值之是void*指针,new返回的是有类型的指针
    3. malloc创建时不会调用结构函数,free不会调用析钩函数,但new/delete会自动调用
    4. 使用malloc使用内存时需要计算自己的字节数,而使用new的时候会自动计算
    4. []可以配合new和delete申请和释放数组
    new[]不可以与delete混用,必须使用delete[]释放
    使用new[]/delete[]创造多少个对象就会调用多少次析钩和构造
    5. new/delete与malloc/free不能混用
    6. delete不可以重复释放,但可以释放空指针
    7. 如果使用new申请内存失败会产生异常 "std::bad_alloc"

    六.C++中的函数
    1. C++中的函数可以在main函数前执行,C语言中不可以
    2. C++中函数名字可以相同,只要参数不一样即可(函数重载,不只是参数)
    函数可以同名,并不是真正意义上的同名,只是在编译期间把函数的名字添加了额外的信息(函数的参数), 返回值不算在内
    3. 内联函数
    内联函数把函数编译成二进制,然后在需要的位置直接把函数拷贝过去,而不是跳转过来
    这样可以减少进栈出栈和调用,以此提高程序的执行效率,但是这样会增加可执行文件的大小
    内联函数与宏函数的区别:从本质上来说是一样的,但内联函数可以检查参数,,也可以具有返回值。
    inline 返回值 函数名(参数)
    {

    }
    4. c++中函数的参数可以有默认值,
    1. 函数的默认参数要靠右
    2. 默认参数要尽量少用,因为可能会引用重载错误
    3. 函数的默认参数是编译器在编译时帮助赋值的,所以只能由全局变量,静态变量,字面值对参数进行赋值。

     
     
     
     
  • 相关阅读:
    python 的class和def 定义执行语句相关
    python _和__ 下划线命名规则
    python2和python3编码问题【encode和decode】
    cpython源码阅读
    eCPRI
    python内存管理/垃圾回收
    Class() vs self.__class__()
    JAVA学习日报 11/24
    JAVA学习日报 11/23
    JAVA学习日报 11/22
  • 原文地址:https://www.cnblogs.com/xiwen2017/p/9436329.html
Copyright © 2020-2023  润新知