一道关于继承和多态的题目

简介: #include #include using namespace std; //---------------------------------------------- class Base//基类 { public: virtual void f(int); v...
#include<iostream>
#include <complex>

using namespace std;
//----------------------------------------------
class Base//基类
{
public:
	virtual void f(int);
	virtual void f(double);
	virtual void g(int i=10);
};

void Base::f(int)
{
	cout<<"Base::f(int)"<<endl;
}

void Base::f(double)
{
	cout<<"Base::f(double)"<<endl;
}

void Base::g(int i)
{
	cout<<i<<endl;
}
//------------------------------------------------

class Dervived:public Base
{
public:
	void f(complex<double>);
	void g(int i=20);
};

void Dervived::f(complex<double>)
{
	cout<<"Dervived::f(complex<double>)"<<endl;
}

void Dervived::g(int i)
{
	cout<<i<<endl;
}
//----------------------------------------------
void main()
{
	Base b;
	Dervived d;
	Base *pb=new Dervived; 
	b.f(1.0);//基类对象调用,执行基类的函数
	d.f(1.0);//子类对象调用,执行子类的函数
	pb->f(1.0);//基类的指针,指向子类,调用函数时,执行基类的函数
	b.g();//基类对象调用,执行子类的函数
	d.g();//子类对象调用,执行子类的函数
	pb->g();//基类的指针,指向子类,调用函数时,执行基类的函数
	delete pb;
}
相关文章
|
7月前
虚继承解决菱形继承的原理
虚继承解决菱形继承的原理
|
7月前
|
存储 编译器 C语言
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题(下)
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题
54 1
|
7月前
|
Java 编译器 定位技术
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题(中)
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题
50 0
|
7月前
|
安全 程序员 C语言
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题(上)
从C语言到C++_22(继承)多继承与菱形继承+笔试选择题
57 0
|
7月前
|
Java 程序员 编译器
Java面向对象之——继承
Java面向对象之——继承
|
存储 设计模式 编译器
【继承与多态常见面试题】建议收藏
【继承与多态常见面试题】建议收藏
140 0
|
7月前
|
编译器 C++
继承和多态中的常见面试题(二)
继承和多态中的常见面试题(二)
|
7月前
|
存储 设计模式
继承和多态中的常见笔试面试题(一)
继承和多态中的常见笔试面试题(一)
|
7月前
|
Java 编译器
【JAVA面向对象编程】--- 探索子类如何继承父类
【JAVA面向对象编程】--- 探索子类如何继承父类
39 0
|
Java
Java面向对象继承
继承的概念 继承是面向对象编程中的一个概念,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。子类在继承父类的同时也可以添加自己的属性和方法,从而实现代码的复用和扩展。继承是面向对象编程的三大特征之一,其他两个分别是封装和多态。 继承的作用 1.提高代码的复用性:通过继承,子类可以直接使用父类的属性和方法,不需要重复定义。 2.便于代码的扩展:通过在子类中添加新的属性和方法,实现了代码的扩展。 3.提高代码的可维护性:将公共的属性和方法放在父类中,可以减少重复的代码,从而方便代码维护和升级。
74 0