C++归纳整理

本文深入探讨了C++编程的基础,包括内联函数、函数重载、继承与多态、异常处理、STL应用以及C++11的新特性。详细解释了如何利用关键字如`inline`、`extern "C"`、`template`和`virtual`来优化代码,同时介绍了内存管理中的深复制与浅复制、动态内存分配与释放。此外,还讨论了C++中的类设计原则,如封装、构造函数与析构函数、静态成员与非静态成员、以及常量和运算符重载。最后,文章提到了C++11引入的`auto`、`nullptr`和智能指针等新特性,强调了右值引用在提高代码效率中的重要作用。
摘要由CSDN通过智能技术生成

C++基础

  1. 内联函数

    • 关键字inline
    • 功能简单、规模较小且使用频繁的函数
    • 在编译的时候将函数嵌入在调用它的地方,可以减少参数传递和控制转移等的开销
    • 定义位于类声明中的函数会自动被认为内联函数
  2. 函数重载(多态)

    • 在同一个作用域中,两个及以上函数的函数名相同,但是参数类型或者参数数量不同,编译器将根据参数类型和参数个数自动匹配并调用,这就是函数重载。
    • 注意:编译器将类型引用和类型本身视为相同的参数。
    • 类的成员函数可以重载,不同类的同名函数不是重载
  3. extern “C”

    • 实现C++调用C语言的代码,提示编译器这部分代码按照C语言进行编译。
    • 编译不同之处:C++支持函数重载,函数编译过程中会将函数名以及参数类型加入到编译后的代码中,C语言不支持函数重载,因此编译过程中只将参数名加入到编译后的代码中。
  4. 函数模板和类模板

    • C++多态性的体现,实现高效的代码重用
    • 关键字template
    • 函数模板
      • 函数模板可以重载
      • 遇上同名普通函数时,编译器会优先选择普通函数,除非函数模板能产生更好的参数类型匹配,可以通过空模板实参列表的语法限定编译器只能通过模板匹配
    • 类模板
      • 子类从模板类继承时,需要制定基类的参数类型,如class B: public A
  5. 类的成员函数

    • 可以重载
    • 可以使用默认参数
    • 一般在头文件中声明,在源文件中定义
  6. 封装

    • 类的定义过程,将抽象得到的数据成员和函数成员形成一个统一的整体
  7. 类的访问修饰符

    • public:类本身、子类、对象
    • protect:类本身、子类
    • private:类本身
  8. 构造函数

    • 完成对象的初始化工作
    • 如果定义了一个带参数的构造函数且不是所有的参数都有默认值,那么必须定义一个不带参数的构造函数,否则调用不带参数的构造函数时会报错
    • 子类中构造函数的调用顺序:基类构造函数(按继承顺序)、派生类对象成员的构造函数(按声明顺序)、派生类构造函数
  9. 复制构造函数

    • 什么时候调用

      • 用已经定义的对象去初始化其它对象的时候
      • 函数的形参是对象类型,完成形参和实参结合的时候
      • 函数返回值是对象,函数执行完返回结果的时候
    • 什么时候需要自定义复制构造函数(完成深复制)

      • 类数据成员有指针的时候
      • 类数据成员管理资源的时候,如打开文件
      • 需要析构函数释放资源的时候
    • 禁止调用复制构造函数

      class Uncopyable {
      private:
      	Uncopyable(const Uncopyable &);	//阻止拷贝构造
      	Uncopyable &operator=(const Uncopyable &);	//阻止赋值运算符
      };
      
  10. 析构函数

    • 完成对象删除前的清理工作,对象删除前系统自动调用
    • 不可以重载
    • 可能会被继承的类的虚函数应该声明为虚函数,这样可以使用基类的指针释放子类的空间,否则会发生内存泄漏
    • 析构函数调用顺序与构造函数相反:派生类析构函数体、派生类成员对象析构函数、基类析构函数
  11. static数据成员

    • 实现同类不同对象之间的数据共享

    • 访问 类名::静态对象名

    • 需要在类外初始化,初始化时不加static

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值