首页 > 编程语言 >C++虚函数

C++虚函数

时间:2023-04-07 15:37:30浏览次数:37  
标签:函数 基类 多态 virtual C++ 派生类 Print

形式:virtual 函数类型 函数名 ()(在派生类和基类里都要写)

静态成员函数不能是虚函数

1.通过指针实现多态

对于基类的对象:调用基类的虚函数

对于派生类的对象:调用派生类的虚函数

#include <iostream>
using namespace std;

class A
{	public:
		virtual void Print()
		{	cout << "print A" << endl;
		}
};

class B: public  A
{	public:
		virtual void Print()
		{	cout << "print B" << endl;
		}
};

class C: public A
{	public:
		virtual void Print()
		{	cout << "print C" << endl;
		}
};

int main()
{	A a1;
	A a2;
	B b;
	C c;
	A *pa1 = &a1;
	A *pa2 = &a2;
	C *pc = &c;
	pa1->Print();
	pa1 = &b;
	pa1->Print();
	pa2 = pc;
	pa2->Print();
	return 0;
}

C++虚函数_派生类

2.通过基类的引用实现多态

#include <iostream>
using namespace std;

class A
{	public:
		virtual void Print()
		{	cout << "print A" << endl;
		}
};

class B: public  A
{	public:
		virtual void Print()
		{	cout << "print B" << endl;
		}
};

void in(A &r)//基类的引用
{	r.Print();//是谁的对象就调用谁的Print
}

int main()
{	A a;
	B b;
	in(a);
	in(b);
	return 0;
}

C++虚函数_派生类_02

标签:函数,基类,多态,virtual,C++,派生类,Print
From: https://blog.51cto.com/u_15810302/6176314

相关文章

  • C++知晓某个key值,调用相应的类函数
    1、类函数中定义一个map表typedefint(CClassTest::*pfnMethodExe)(std::stringstrInput,intnInputNum); std::map<std::string,pfnMethodExe>m_fnMethodExecute;CClassTest为类名,typedefint中的int为函数返回值,可以为其他值2、key值和函数对应关系放入map表中m_fnMeth......
  • Python中的时间函数strftime与strptime对比
    一、striftime将给定格式的日期时间对象转换为字符串。日期时间对象=>字符串,控制输出格式.date、datetime、time对象都支持strftime(format) 方法,可用来创建由一个显式格式字符串所控制的表示时间的字符串。用法:datetime.strftime(format)importdatetimedt=datetime.dateti......
  • c++之静态库与动态库
    一.代码分发方式代码分发方式有三种: 二.动态库与静态库区别三.C/C++到可执行程序的过程:四总结首先清楚,一般来说源码包含.h+.cpp两个文件,而静态库包含.h+.lib文件,动态库包含.h+.lib+.dll,明显动态库要比静态库的文件要更零散一点;其次,要知道.h/.lib/.dll分别起到什么作用,......
  • C++
    EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。在微软的DOS和Windows中,读取数据时终端不会产生EOF。此时,应用程序知道数据源是一个终端(或者其它“字符设备”),并将一个已知的保留的字符或序列解释为文件结束的指明;最普遍地说,它是ASCII码中的替换字符(Control-Z,代......
  • C/C++机房失物招领[2023-04-07]
    C/C++机房失物招领[2023-04-07]程序设计题:机房失物招领出题人:许棣华面向专业:软件工程难度等级:41问题描述经常有一些丢三落四的同学,在不经意的时候会丢失物品。比如:在机房,每天做值日的同学都会发现有U盘、钥匙、书本等物品被落下,他们会将这些物品放在固定位置或交由工作人员......
  • A C++ program that prints itself
    #include<iostream>usingnamespacestd;intmain(){strings="cout<<\"#include<iostream>\\nusingnamespacestd;\\n\\nintmain(){\\nstrings=\\\"\";\nfor(chari:s)\nif(i==�......
  • 自制 js 的 trim、right、left、instrRev、instr、mid 函数
    //用惯了VB系列语法的instr和mid函数,在js里面处理字符串总是感觉束手束脚//跟Basic语法比起来,其他语言的字符串处理函数的确非常不方便!!!因此,必须自己写个仿Basic语法的javascript的常用字符串处理函数库来用!!!//以下是经过多次修正,便于js处理字符串的函数functi......
  • Keil Arm中使用malloc函数的方法
    出处 http://blog.sina.com.cn/s/blog_a189aca10102vabo.htmlKeilArm中使用malloc函数的方法:1、需要使用微库:如果不选用微库的话会报错,例如:.\Output\SaiWu.axf:Error:L6915E:Libraryreportserror:__use_no_semihostingwasrequested,but_ttywrchwasreferenced2......
  • 题目 1031: [编程入门]自定义函数之字符串反转
    在主函数中输入一个字符串(不包含空格),写一个新函数将字符串按反序存放,并在主函数中输出反序后的字符串gets()能把字符串写入数组里,我只需要再写一个新数组,把array数组的最后一个元素赋值给新数组的第一个元素,把array的倒数第二个赋值给新数组的第二个……这样一个一个赋值,万一阿......
  • MPI通信相关函数
    MPI环境操作初始化MPI_INIT结束MPI_FIANLIZE MPI通信子操作MPI_COMM_SIZEMPI数据类型通信函数SEND()函数格式intMPI_Send(void*buf,intcount,MPI_Datatypedatatype,intdest,inttag,MPI_Commcomm)buf:发送数据buffercount:发送数据长度datatype......