c++知识点总结

封装:就是将类的成员按使用或存取的方式分类,从而有条件的限制对类的成员的使用。
构造函数:
在定义对象的同时被调用。
构造函数没有返回值类型,前面不能加void。
构造函数可以重载。
构造函数的函数名必须和类名相同。
析构函数:
没有返回值的函数,不能随意调用,也没有重载,一个类中只能由一个析构函数。
拷贝构造函数:
类名::类名(const 类名 & 对象名)
也是一种构造函数,所以其函数名与类名相同,并且该函数也没有返回值类型。
只有一个参数。并且是同类对象的引用。
每个类都必须有一个拷贝构造函数。
浅拷贝:
就是由默认的拷贝构造函数所实现的数据成员的逐一赋值。
深拷贝
指不是复制指针本身,而是复制指针所指向的动态空间。这样两个对象的指针成员就拥有不同的地地址,
指向不同的动态储存空间的首地址,而且两个动态空间中的内容完全一样。
静态成员
包括静态数据成员和静态函数成员。
静态数据成员
在建立对象前,就可以为静态数据成员赋值。
静态成员函数
静态成员函数属于整个类,是该类所有对象共享的成员函数,而不属于类中的某个对象。
静态成员函数可以定义成内嵌的,也可以在类外定义,在类外定义时,不用static前缀。
静态成员函数中是没有this指针的。
友元函数
友元函数不是类的成员函数,可以把友元函数的说明放在private,public,protected的任意段中,
在类外部定义友元函数时,不必像成员函数那样,在函数名前面加上“类名: :”。
使用友元函数的目的是为了提高程序的运行效率。
慎用友元函数,它破坏了类的信息隐藏的特性。
常对象 const
通过常对象只能调用类中那些不改变的数据成员值的成员函数(即常成员函数),而不能调用类中的其他的普通成员函数
继承与派生
在继承是如果没有显式的使用三个关键词之一进行声明,系统就默认为私有继承。
基类的构造函数和析构函数不能被派生类继承,派生类若要初始化基类的数据成员必须在构造函数中初始化。
派生类的访问属性
public继承时,基类成员的访问控制权限除私有成员外,在派生类中保持不变。
protect继承时,基类成员的public访问权限在派生类中变为protect。
private继承时,基类成员的public和protect访问权限在派生类变为private。
派生类的构造函数和析构函数
构造函数的调用顺序:
1.基类的构造函数。2.对象成员的构造函数(如果有的话)有多个时按声明的顺序
3.派生类的构造函数。
析构函数与构造函数的执行顺序相反
1.派生类的析构函数。2.对象成员的构造函数,有多个时与声明顺序相反。
3.基类的构造函数。
对派生类中基类成员的构造,必须由基类的构造函数来完成,而不能由派生类的构造函数越权去构造。
在多重继承的情况下,调用不同的基类中的相同成员时可能回出现二义性问题,加上类名的限定可以避免名字冲突问题。
虚基类
class 派生类名 :virtual 继承方式 基类名称{ };
虚函数与多态性
基类指针指向派生类对象
虽然基类指针指向派生类的对象,但是指针的属性并没有改变,所以系统认为它所指向的仍然是一个基类对象。
虚函数
虚函数必须声明为类的成员函数,全局函数及静态成员函数不能声明为虚函数。
虚函数的声明和一般成员函数一样,可以定义在类外,也可以定义在类内。
构造函数不能声明为虚函数。
析构函数可以是虚函数。
虚析构函数
如果用new运算符生成一个派生类的堆对象,并让基类指针指向该派生类对象,程序用delete运算符通过基类指针
删除派生类对象时,会发生一种情况,系统会只执行基类的析构函数,而不执行派生类的析构函数。
如果要执行派生类的析构函数,就要将基类的析构函数声明为虚析构函数。
构造函数不能声明为虚函数是因为在执行构造函数时类对象还未完成建立的过程。当然谈不上函数与类对象的绑定。
纯虚函数
virtual 函数类型 函数名(参数表)= 0;
纯虚函数没有函数体,只是一个声明语句,后面应该有分号。
纯虚函数只有函数的名字不具备函数的功能,不能被调用,留着派生类中定义。
抽象类
包含纯虚函数的类时抽象类。
多态性是指不同的对象对于相同的消息会产生不同的行为,时对类的特定成员函数的再抽象,这里的消息是指
对类的成员函数的调用,不用的行为是指不同的实现,也就是调用了不用的函数。
运算符重载
要么将函数定义为类的成员函数,要么将它定义成类的友元函数,对于同一个运算符,不能两者都定义,否则产生二义性。
运算符重载成为友元函数
声明友元的主要原因时要在类的运算符函数中直接访问类的私有成员,这样可以提高函数的执行效率。
friend 返回类型 operator @ (参数表);
具体定义为: 返回类型 operator @ (参数表){ }
运算符重载为成员函数
Complex Complex : : operator - (const Complex &c)

以友元函数形式重载运算符时,一元运算符带一个参数对应于其操作数,二元运算符带两个参数,分别对应于左右操作数。
以成员函数形式重载运算符时,一元运算符不能带有参数,二元运算符带有一个参数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值