c++总结

一 对象的初始化、复制和销毁
1.对象的初始化和销毁
对象初始化:初始化不是赋值,初始化是在创建一个对象时赋予其一个初始值,而赋值是用一个新值去替换原有的值。大致有四中初始化方式,即默认初始化,直接初始化,拷贝初始化,列表初始化。不同的初始化形式意味着要调用不同的构造函数。
2.默认构造函数
可以不提供实参就能调用的构造函数称为默认构造函数。通常要为类定义一个默认构造函数,在定义对象时如果没有提供初值,会调用默认构造函数进行初始化。
3.析构函数
析构函数执行与构造函数相反的操作。析构函数释放对象使用的资源,并销毁对象的非static数据成员。析构函数在大多数情况下都是被自动地隐式调用。

二运算符重载
1.运算符重载:将运算符看作是一种特殊的函数,操作数是函数的参数,运算结果是函数的返回值
函数名由关键字operator 和其后要定义的运算符组成
operator=, operator<<, operator+
通常声明为类的友元,以便访问私有数据成员
赋值(=)、下标([])、函数调用(())和成员函数访问箭头(->)运算符必须是成员函数
2.一元运算符:
前缀和后缀形式都会改变对象,不能对常量对象操作
前缀形式返回改变后的对象,后缀形式返回改变之前的值
后缀形式的自增和自减比前缀形式多一个int参数,这个参数在函数中并不使用,只是作为重载函数的标记来区分前缀和后缀运算
重载自增和自减运算符时应同时定义前缀和后缀形式
3.二元运算符:
赋值运算符:赋值运算符只能用成员函数重载;复合赋值运算符可以用成员或非成员重载

三、组合与继承
1.组合
对象成员语法也被称作组合或包含,将已有类的对象作为成员,可以通过成员对象使用已有类的功能,复用其实现。
组合:
将一个类的对象作为另一个类的成员
对象成员的初始化:
创建包含对象成员的组合对象时,会执行成员类的构造函数初始化对象成员,要注意,成员初始化的次序和成员声明的次序相同
当组合对象被撤销时,会执行其析构函数,成员对象的析构函数也会被执行
复用类的实现:应用组合,重新包装一个类对象,使之用于特定的环境
2.继承:
在已有类的基础上创建新类的过程
被继承的已有类称为基类;
继承得到的新类称为派生类;
派生类可以再被继承,这样构成的层次结构称为继承层次
继承类包含了多个代码的重复部分,为了避免重复代码多次书写将重复部分提出单独写一个类,用需要这部分功能的类去继承。
类继承关系的语法形式:

class 派生类名 : 基类名表 	{ 	 数据成员和成员函数声明 	}; 

基类名表 构成
访问控制 基类名1, 访问控制 基类名2 ,… , 访问控制 基类名n
访问控制 表示派生类对基类的继承方式,使用关键字:
3.重名成员:
==派生类定义了与基类同名的成员,在派生类中访问同名成员时屏蔽了基类的同名成员
在派生类中使用基类的同名成员,显式地使用类名限定符:
类名 :: 成员 ==
基类和派生类共享基类中的静态成员
根据静态成员自身的访问特性和派生类的继承方式,在类层次体系中具有不同的访问性质
派生类中访问静态成员:类名 :: 成员 或 对象名 . 成员
构造函数执行顺序:基类 ,对象成员,派生类
4.继承规则:
基类的构造函数和析构函数不能被继承
如果基类没有定义构造函数或有无参的构造函数, 派生类也可以不用定义构造函数
如果基类无无参的构造函数,派生类必须定义构造函数
如果派生类的基类也是派生类,则每个派生类只负责直接基类的构造
派生类是否定义析构函数与所属的基类无关
5.派生类构造函数的一般格式为:

派生类::派生类名(参数总表):基类名(参数表) { // 派生类新增成员的初始化语句 }

6.多继承:一个类有多个直接基类的继承关系称为多继承

四、虚函数与多态
1.多态性:同一操作在不同场景下的不同效果。
多态性可以为程序带来更大的灵活性和可扩展性。
虚函数:有virtual 关键字的成员函数称为虚函数
实现运行时多态的关键首先是要说明虚函数,另外,必须用基类指针调用派生类的不同实现版本
2.注意:
一个虚函数,在派生类层界面相同的重载函数都保持虚特性
虚函数必须是类的成员函数
虚函数可以是另一个类的友元
析构函数可以是虚函数,但构造函数不能是虚函数
在派生类中重载基类的虚函数要求函数名、返回类型、参数个数、参数类型和顺序完全相同
派生类应该从它的基类公有派生
必须首先在基类中定义虚函数
一般通过基类指针访问虚函数时才能体现多态性
一个虚函数无论被继承多少次,保持其虚函数特性
多态性 实现的两种方式
a、编译时多态性:通过重载函数实现
b、运行时多态性:通过虚函数实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值