重庆网站建设cqsday,做网站设计需要多久,dw怎么用模板做网页,seo知识分享文章目录 #x1f4da;多态#x1f4da;运算符重载#x1f407;定义#x1f407;规则#x1f407;友元运算符重载函数#x1f407;成员运算符重载函数 #x1f4da;虚函数#x1f4da;纯虚函数和抽象类 #x1f4da;多态
多态#xff1a;同样的消息被不同类型的对象… 文章目录 多态运算符重载定义规则友元运算符重载函数成员运算符重载函数 虚函数纯虚函数和抽象类 多态
多态同样的消息被不同类型的对象接收时导致不同的行为。类型 ⭐️重载多态普通函数及类的成员函数的重载。⭐️强制多态将一个变元的类型加以变化以符合一个函数或者操作的要求。⭐️包含多态类族中定义于不同类中的同名成员函数的多态行为主要是通过虚函数实现。⭐️参数多态与类模板相关联。 多态的实现编译时的多态性和运行时的多态性。 前者为函数重载和模板事先设定好。后者动态联编程序运行时才能确认是用哪个函数。
运算符重载
运算符重载详解博客
定义
运算符重载是对已有的运算符赋予多重含义使同一个运算符作用于不同类型的数据时导致不同的行为。实质就是函数重载。operator是重载关键字。
规则
C中的运算符除了少数几个之外全部可以重载而且只能重载C中已有的运算符。不能重载的运算符 成员访问运算符.成员指针访问运算符.*作用域运算符::长度运算符Sizeof条件运算符?: 重载后运算符的优先级和结合性都不会改变。一般重载运算符后的意思与本意大致相同。重载不能改变操作数的个数。运算符重载函数的参数必须有一个是非c标准类型即至少有一个操作类型是自定义类型。类对象的运算符除外都需要重载。
友元运算符重载函数 友元运算符重载函数是一种特殊的成员函数它允许我们为一个类定义自定义的友元运算符操作。 友元运算符重载函数的语法如下 friend 函数类型 operator 重载运算符 (形参表)
{函数体;
}友元运算符重载函数必须声明为类的友元函数。这样它才能够访问类的私有成员。 友元运算符重载函数没有隐式的 this 指针因此不能直接访问类的成员变量和成员函数。但可以通过参数列表中的参数来访问类的对象。 友元运算符重载函数通常定义在类的内部但是使用 friend 关键字将其声明为友元函数。 友元运算符重载函数可以实现任何自定义的运算符操作例如加法、减法、乘法、除法等。
成员运算符重载函数
语法函数类型 operator 重载运算符(形参表)
{函数体;
}函数类型为此运算符的返回类型可以不是类类型。,-等建议成员函数其他建议友元。
虚函数
类内声明函数类型前加virtual定义时不用加。派生类中的虚函数的重新定义必须和基类中的一模一样函数与耐性函数名参数个数参数类型顺序否则会丢失虚特性。派生类中函数与基类中的虚函数一旦同名则自动成为虚函数所以关键字virtual可不加。派生类未对基类虚函数重新定义则原样继承基类的虚函数无论继承多少次仍保持虚函数特性。虚函数不能是友元函数不能是静态成员函数因为虚函数需要特定的对象来激活。
纯虚函数和抽象类
virtual 函数类型 函数名参数表0即基类中不再给出实现部分只保留名字因此不具备函数功能不能被调用。有一个纯虚函数的类就叫做抽象类 抽象类的主要作用是通过它为一个类族建立一个公共的接口使它们能够更有效地发挥多态特性。抽象类声明了一组派生类共同操作接口的通用语义而接口的完整实现即纯虚函数的函数体要由派生类自己给出。只能做基类不能声明基类对象。不能做参数类型函数返回类型或显式转换类型但可以声明基类型指针变量由此可以指向派生类实现动态联编。如果派生类中没有重新定义纯虚函数那么派生类还是一个抽象类。 在类成员方法的声明(不是定义)语句前面加个单词virtual它就会摇身一变成为虚函数。在虚函数的声明语句未尾中加个 0它就会摇身一变成为纯虚函数。子类可以重新定义基类的虚函数我们把这个行为称之为复写(override)。不管是虚函数还是纯虚函数基类均可为其提供实现代码(implementation)在这种情况下子类可以调用基类的这些实现。子类自主选择是否要提供一份属于自己的个性化虚函数实现。子类必须提供一份属于自己的个性化纯虚函数实现。 在C中能否声明虚构造函数为什么能否声明虚析构函数有何用途
在C中不能声明虚构造函数多态是不同的对象对同一消息有不同的行为特性虚函数作为运行过程中多态的基础主要是针对对象的而构造函数是在对象产生之前运行的因此虚构造函数是没有意义的可以声明虚析构函数析构函数的功能是在该类对象消亡之前进行一些必要的清理工作如果一个类的析构函数是虚函数那么由它派生而来的所有子类的析构函数也是虚函数。析构函数设置为虚函数之后在使用指针引用时可以动态联编实现运行时的多态保证使用基类的指针就能够调用适当的析构函数针对不同的对象进行清理工作。 群体类和群体数据的组织主要是template模板相关博客补充
清华大学C课程学习笔记C中的函数模板C中的类模板