C++基类派生类

本文通过一个具体的C++程序示例介绍了多重继承的概念及使用方法。示例中包括了基类BaseClass与两个一级派生类Derived1Level1、Derived2Level1,以及二级派生类Derived2Level2。通过成员函数的覆盖与调用展示了多重继承的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// C++_test1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<iostream>
#include<string>
#include<cctype>
#include<fstream>

// using namespace std;

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::ifstream;

//基类
class BaseClass {
public:
	BaseClass() {}
	void f(char*s = "unknown") {
		cout << "Function f() in BaseClass called from " << s << endl;
		h();
	}
protected:
	void g(char*s = "unknown") {
		cout << "Function g() in BaseClass is called from " << s << endl;
	}
private:
	void h() {
		cout << "Function h() in BaseClass\n";
	}
};
//派生类
class Derived1Level1 :public virtual BaseClass {
public:
	void f(char*s = "unknown") {
		cout << "Function f() in Derived1Level1 is called from " << s << endl;
		g("Derived1Level1");
		h("Derived1Level1");
	}
	void h(char*s = "unknown") {
		cout << "Function h() in Derived1Level1 is called from " << s << endl;
	}
};
//派生类
class Derived2Level1 :public virtual BaseClass {
public:
	void f(char*s = "unknown") {
		cout << "Function f() in Derived2Level1 is called from " << s << endl;
		g("Derived2Level1");
	}
};

class Derived2Level2 :public Derived1Level1, public Derived2Level1 {
public:
	void f(char*s = "unknown") {
		cout << "Function f() in Derived2Level2 is called from " << s << endl;
		g("Derived2Level2");
		Derived1Level1::h("Derived2Level2");
		BaseClass::f("Derived2Level2");
	}
};


int main() {
	
	BaseClass bc;
	Derived1Level1 d1ll;
	Derived2Level1 d2ll;
	Derived2Level2 d22;
	bc.f("main(1)");
	d1ll.f("main(2)");
	d1ll.h("main(3)");
	d2ll.f("main(4)");
	d22.f("main(5)");
	d22.h();


	//暂停,供用户按下enter
	// system("pause");
	cin.ignore();

	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值