title: C++复习重点
tags: 学习
categories: 学习
abbrlink: 8b042bec
date: 2018-12-03 16:23:32
C++重点
- 函数重载必须有不同的形参列表
- 析构函数可以是虚函数
- 具有纯虚函数的类不能创建类对象
- 静态数据成员是类的所有对象共享的数据
- 将一组对象的共同特征抽象出形成类
- friend void B::fun(); //B的成员函数fun()说明为A的友元函数
- 如果一个引用不是用作函数参数或返回值,则在说明该引用时必须进行 初始化
- const double pi = 3.141592653589793 ;
- int operator++(int x); // ++运算符重载
- 动态联编通过基类指针或引用调用虚函数完成
- 构造函数访问权限是公有的
- 基类对象的地址不能赋给派生类
- 创建对象时 test(2); 表示创建一个对象并赋值2
test[2]; 表示创建两个对象,并且值为默认值 - main函数执行完毕之后才执行析构函数,每个对象析构一次
- 创建对象时,类a被调用一次,执行类a里的函数时,类a又被调用一次
- c继承b,c类内对a赋值,创建c类对象时 先调用类b,再调用类a,最后调用c类本身。
- 在函数模板的参数中,用class修饰的参数称为虚拟类型参数
- 以面向对象方法构造的系统,其基本单位是对象
- 对象是类的一个实列
- 对象将其大部分细节隐藏起来,这种机制称为封装
- 复杂对象可以由简单对象构成,称为聚合
- C++支持编译时的多态性和运行时的多态性
- C++中,编译时的多态性是通过重载实现,运行时的多态性通过虚函数实现
- 三个阶段:分析,设计,实现
- 若在类的定义体中给出了一个成员函数的完整定义,则该函数属于内联函数
- 把一个类的定义体和所有成员函数的定义体所构成的程序范围叫做该类的作用域
- 对类中对象成员的初始化是通过在构造函数中给出的初始化表实现的,也可以通过构造函数中的函数体实现 对类中对象成员和常量成员和引用成员的初始化是通过构造函数给出的初始化表实现的
- AB为一个类, AB(AB& x); 为类AB的拷贝构造函数
- 重载运算符时,该运算符的优先级,结合性,操作符的个数不允许改变,不能创建没有的运算符
- 单目运算符作为类的成员函数重载时有0个参数,独立函数重载时有1个参数。
双目运算符作为类的成员函数重载时有1个参数,独立函数重载时有2个参数。
赋值运算符不能被派生类继承 - 虚基类是为了消除二义性
- 在每个成员函数中,隐含的第一个参数的参数名为this
隐含的第一个参数类型为 类名* - 保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以虚基类的方式直接继承它。
- B类继承A类,用B类创建对象后,先析构B类,在析构A类
- 用户可以重新定义标准库函数,若如此,该函数将失去原有含义
- 引用调用是 形参是引用,实参是变量
- 函数调用不可以作为一个函数的形参
- 成员函数重载是为了使用方便,提高可读性和灵活性
- void *为无类型指针,能够指向不论什么数据类型,可以用随意数据类型的指针对void指针赋值
- 面向对象方法的多态性是指针对一消息,不同的对象可以以适合自身的方式加以响应
- OOA:面向对象分析(analysis) OOD:面向对象设计(design)
- 类中定义的成员默认为private访问属性,结构中定义的成员默认为public访问属性
- 一个类的静态数据成员所表示属性只是类的属性
- 静态成员函数只允许操作静态成员变量,不允许操作非静态成员变量
- 静态数据成员的初始化是在全局区中进行的
- 类A是类B的友元类,类A的所有成员函数都可以访问类B的所有成员。
- 一个类的友元不是该类的成员,但与该类的关系密切,所以他没有this指针,也就没有默认操作的对象
- a++中的++是作为普通函数重载的运算符,则调用格式可以是operator++(a,1)
++a中的++是作为成员函数重载的运算符,则调用格式可以是a.operator++()