zoukankan      html  css  js  c++  java
  • 关于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. 函数的默认参数是编译器在编译时帮助赋值的,所以只能由全局变量,静态变量,字面值对参数进行赋值。

  • 相关阅读:
    The Future of Middleware and the BizTalk Roadmap
    FW: How to spawn a process that runs under the context of the impersonated user in Microsoft ASP.NET pages
    Strips illegal Xml characters
    luogu P2280 激光炸弹(二维前缀和)
    luogu P2704 炮兵阵地(经典状态压缩DP)
    SP1716 GSS3 Can you answer these queries III (线段树维护最大连续子段和)
    二分图判定、匹配问题
    C++语法综合 | 基于char*设计一个字符串类MyString
    luogu P1044 火车进出栈问题(Catalan数)
    C++设计模式 | 三种设计模式基础
  • 原文地址:https://www.cnblogs.com/gumpzlc/p/9432999.html
Copyright © 2011-2022 走看看