首页 > 其他分享 >虚函数与虚类

虚函数与虚类

时间:2024-08-12 14:38:41浏览次数:6  
标签:const 函数 void 派生类 virtual showperks 虚类

1.构造函数不能定义为虚函数
2.析构函数应该定义为虚函数。
3.友元函数不应该被定义为虚函数。因为友元函数不是类的成员函数。
4.派生类函数重定义会覆盖基类的函数
class Dwelling{
public:
virtual Dwelling &build(int n);
};
class Hovel:public Dwelling{
public:
virtual Hovel &build(int n);//会覆盖基类的函数
}
5.如果有多个基类的函数,派生类应该书写对应的派生类函数。
class Dwelling{
public:
virtual void showperks(int a)const;
virtual void showperks(double x)const;
virtual void showperks() const;
};
class Hovel:public Dwelling{
public:
virtual void showperks(int a)const;
virtual void showperks(double x)const;
virtual void showperks() const;
}
//如果只定义了一个派生类函数,那么基类的另外两个函数会被覆盖,无法调用。
void Hovel::showperks()const{Dwelling::showperks();}
//调用基类的函数
6.纯虚函数
virtual double Area() const =0;
拥有纯虚函数的类不能构造对象,拥有纯虚函数的类被称为抽象类。
7.派生类如果使用了New delete需要重写复制构造函数,析构函数,=赋值运算符
hasDMA & hasDMA::operator=(const hasDMA &hs){
if(this=&hs)
return *this;
baseDMA::operator=(hs);
delete [] style;
style=new char[strlen(hs.style)+1];
strcpy(style,hs.style);
return *this;
}
8.使用类型转换和输出操作符重载实现派生类输出
std::ostream & operator<<(std::ostream &os,const baseDMA &rs){
os<<"Label:"<<rs.label<<endl;
os<<"Rating:"<<rs.rating<<endl;
return os;
}//基类

std::ostream & operator<<(std::ostream &os,const hasDMA &hs){
os<<(const base DMA &)hs;//强制类型转换,调用基类的友元函数
os<<"Style:"<<rs.style<<endl;//派生类数据成员输出
return os;
}//派生类

标签:const,函数,void,派生类,virtual,showperks,虚类
From: https://www.cnblogs.com/zhongta/p/18354892

相关文章

  • C 提高篇 断言assert函数
    对于断言,相信大家都不陌生,大多数编程语言也都有断言这一特性。简单地讲,断言就是对某种假设条件进行检查。在C语言中,断言被定义为宏的形式(assert(expression)),而不是函数,其原型定义在<assert.h>文件中。其中,assert将通过检查表达式expression的值来决定是否需要终止执行程序。......
  • 函数指针数组的应用-转移表
    函数指针数组的概念数组是⼀个存放相同类型数据的存储空间,我们已经学习了指针数组,⽐如:数组的每个元素是int*类型。而函数指针变量应该是⽤来存放函数地址的,未来通过地址能够调⽤函数的,比如:那要把函数的地址存到⼀个数组中,那这个数组就叫函数指针数组,那函数指针的数组如......
  • flock 函数
    flock函数在许多编程语言中都用来管理文件锁定,以确保多个进程/线程不会同时访问同一个文件。下面是在C语言中的flock函数的简要说明:头文件要使用flock函数,你需要包含以下头文件:#include<sys/file.h>函数原型intflock(intfd,intoperation);参数-fd:文件描述......
  • Vue自定义指令——函数式与对象式以及注意事项
    作者:CSDN-PleaSure乐事欢迎大家阅读我的博客希望大家喜欢使用环境:vscodeChrome浏览器目录1.什么是自定义指令1.1定义2.函数式自定义指令2.1定义2.2书写格式与效果3.对象式自定义指令3.1定义3.2书写格式与效果4.需要注意的坑4.1命名4.1.1问题4.1.2原因4.1.3......
  • 多元/多维高斯/正态分布概率密度函数推导 (Derivation of the Multivariate/Multidime
    各种维度正态分布公式:一维正态分布二维正态分布/多维正态分布各向同性正态分布 注:即方差都是一样的,均值不一样,方差的值可以单独用标量表示。多元/多维高斯/正态分布概率密度函数推导(DerivationoftheMultivariate/MultidimensionalNormal/GaussianDensity)作者:凯......
  • 34 -realloc()函数
    文章目录1函数原型2参数3返回值4示例1函数原型realloc():重新分配内存块,函数原型如下:void*realloc(void*ptr,size_tsize);cstdlib库描述如下:Reallocatememoryblock1.Changesthesizeofthememoryblockpointedtobyptr.2.Thefunctionmay......
  • C++虚函数表、地址详解(x86/x64)
    参考博文:c++虚函数表、地址详解-CSDN博客本文在上述博文的基础上,补充了x64下的验证代码。一.什么是虚函数表,它有什么特点?        虚函数大家都知道是基本用于实现多态的,当父类指针指向子类对象的时候,如何确定调用的函数是父类里的还是子类里面的,这就要用到虚函数表......
  • JS【详解】数据类型检测(含获取任意数据的数据类型的函数封装、typeof、检测是否为 nul
    【函数封装】获取任意数据的数据类型/***获取任意数据的数据类型**@paramx变量*@returns返回变量的类型名称(小写字母)*/functiongetType(x){//获取目标数据的私有属性[[Class]]的值constoriginType=Object.prototype.toString.call(x);//......
  • 多项式与生成函数
    多项式与生成函数1普通生成函数1.1定义\(F(x)=\sum_{n\geq0}a_nx^n\)。例如:序列\(<1,2,3>\)的生成函数为\(1+2x+3x^2\);序列\(<1,2,4,\dots>\)的生成函数为\(\sum_{n\geq}2^nx^n\)。1.2加减运算\(F(x)\pmG(x)=\sum_{n\geq0}(a_n+b_n)x^n\)。即\(F(x)\pmG(x)......
  • 21:Python函数全局变量和局部变量
    #全局变量与局部变量,全局变量大写,局部变量小写NAME='ladfs'#定义全局变量,全局作用域顶格defchange_name():print('change_name',NAME)#调用全局变量change_name()#全局变量与局部变量NAME='ladfs'#定义全局变量defchange_name():......