类型兼容原则遇上函数重写

C++多态实践

1、面向对象新需求

编译器的做法不是我们期望的

         根据实际的对象类型来判断重写函数的调用

         如果父类指针指向的是父类对象则调用父类中定义的函数

         如果父类指针指向的是子类对象则调用子类中定义的重写函数

这个新的需求就是多态


#include<iostream>
using namespace std;


class Parent
{
public:
	Parent (int a)
	{
		this->a = a;
		cout<<"a: "<<a<<endl;
	}
	virtual void print()//在父类同名函数写了virtual关键字后子类可写可不写
	{
		cout<<"Parent 打印a: "<<a<<endl;
	}
protected:
private:
	int a;
};


class child:public Parent
{
public:
	child (int b):Parent(10)
	{
		this->b = b;
		cout<<"b: "<<b<<endl;
	}
	void print()
	{
		cout<<"Child 打印b: "<<b<<endl;
	}
protected:
private:
	int b;
};

void howToPrint(Parent *base)
{
	base->print();
}

void howToPrint2(Parent &base)
{
	base.print();
}



int main()
{
	Parent *base = NULL;
	Parent p1(20);
	child c1(30);

	base = &p1;
	base->print();//执行父类的大隐函数

	base = &c1;
	base->print();//执行谁的函数?----面向对象新需求
	
	{
		Parent &base2 = p1;
		base2.print();
	
		Parent &base3 = c1;//base3是c1的别名
		base3.print();
	}

	//函数调用
	howToPrint(&p1);
	howToPrint(&c1);

	howToPrint2(p1);
	howToPrint2(c1);
	

	system("pause");
	return 0;
}




关于您的设置有一些错误。 您的网页服务器没有正确设置允许文件同步,因为 WebDAV 接口看起来无法正常工作。 要允许此检查运行,您必须确保您的 Web 服务器可以连接到自身。因此,它必须能够解析并连接到其 "trusted_domains" 或 "overwrite.cli.url" 中的至少一个。此失败可能是服务端 DNS 不匹配或出站防火墙规则的结果。 您的数据目录和文件似乎可以从互联网访问。这是因为 .htaccess 文件无效。强烈建议您配置您的 web 服务器,使数据目录不再可访问,或将数据目录移到 web 服务器文档根目录之外。 您的网络服务器不使用 JavaScript MIME 类型提供 ".mjs" 文件。 这会阻止浏览器执行 JavaScript 文件,从而破坏某些应用程序。 您应该配置您的网络服务器以使用 "text/javascript" 或 "application/javascript" MIME 类型提供 ".mjs" 文件。 PHP 内存限制低于推荐值 512 MB。某些功能或应用 — 包括更新程序 — 可能无法正常运行。 您的网络服务器未正确设置来解析 `.wellknown` URL,失败于: `/.well-known/caldav` 了解更多详情,请参见文档 ↗。 自从 2025年3月3日 19:22:40 日志中存在 3 个错误 服务器没有配置维护时段开始时间。 这意味着资源密集型日常后台作业也将在您的主要使用时间执行。 我们建议将其设置为低使用率的时间,这样用户就不会受到这些繁重任务造成的负载的影响。 了解更多详情,请参见文档 ↗。 One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations. 您目前正在运行 PHP 8.1.2-1ubuntu2.20。自 Nextcloud 30 以来,PHP 8.1 已被弃用。Nextcloud 32 可能至少需要 PHP 8.2。请尽快升级到 PHP Group 提供的官方支持的 PHP 版本之一。 了解更多详情,请参见文档 ↗。 您的实例上的某些标头设置不正确 - 未设置 `Strict-Transport-Security` HTTP 标头(应至少为 `15552000` 秒)。为了增强安全性,建议启用 HSTS。 了解更多详情,请参见文档 ↗。 PHP 的安装似乎不正确,无法访问系统环境变量。getenv("PATH") 函数测试返回了一个空值。 了解更多详情,请参见文档 ↗。
03-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值