C++ 多态的定义及实现
发布日期:2021-06-29 18:53:15 浏览次数:2 分类:技术文章

本文共 1561 字,大约阅读时间需要 5 分钟。

文章目录

C++ 多态的定义及实现

1. 多态定义的构成条件

  • 多态是在不同继承关系的类对象,去调同一函数,产生不同行为。
  • 有一对继承关系的两个类,
    • 这两个类里面都有一个函数且名字、参数、返回值均相同,
    • 然后我们通过调用函数来实现不同类对象完成不同的事件。

  • 构成多态还有两个条件:
  • 调用函数的对象必须是指针或引用
  • 被调用的函数必须是虚函数,且完成了虚函数的重写
#include 
class Person{
public: virtual void BuyTicket(int a) {
std::cout << "Adult need Full Fare!" << std::endl; }};class Child : public Person{
public: virtual void BuyTicket(int a) {
std::cout << "Child Free!" << std::endl; }};void fun(Person& obj){
obj.BuyTicket(1);}int main(void){
Person p; Child c; p.BuyTicket(123); c.BuyTicket(12); fun(p); fun(c); return 0;}

#include 
class Person{
public: void BuyTicket(int a) {
std::cout << "Adult need Full Fare!" << std::endl; }};class Child : public Person{
public: void BuyTicket(int a) {
std::cout << "Child Free!" << std::endl; }};void fun(Person& obj){
obj.BuyTicket(1);}int main(void){
Person p; Child c; p.BuyTicket(123); c.BuyTicket(12); fun(p); fun(c); return 0;}

  • 要是把指针换成类呢???
  • 那就没有这种效果了!
#include 
class Person{
public: void BuyTicket(int a) {
std::cout << "Adult need Full Fare!" << std::endl; }};class Child : public Person{
public: void BuyTicket(int a) {
std::cout << "Child Free!" << std::endl; }};void fun(Person obj){
obj.BuyTicket(1);}int main(void){
Person p; Child c; p.BuyTicket(123); c.BuyTicket(12); fun(p); fun(c); return 0;}

No End!

canister

转载地址:https://cyj666.blog.csdn.net/article/details/108318059 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:cpp交通:八:创建新的类型
下一篇:Offer 43. 1~n整数中1出现的次数+有多少个1系列?

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年05月02日 22时43分55秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章