文档章节

C++--多态

wyhuan
 wyhuan
发布于 2016/01/26 11:14
字数 449
阅读 4
收藏 0

多态

多态 :当子类和基类存在同形函数(返回值相同,函数名相同,形参相同),此时若将基类对象作为函数形参则会存在调用混淆(无论传递的实参是子类对象还是基类对象都会只调用基类的成员函数),为了解决这种问题C++ 引入了多态,多态就是让程序能在运行时能自动根据实参类型自动确认调用哪个函数的能力。

示例

class A

{

public:

void fun(int x)

{

a=x;

    cout<<a+1<<endl;

}

private:

int a;

};

class  B public A

{

public:

void fun(int y)

{   

    b=y;

    cout<<b<<endl;

}

Private:

int b;

};

void f(A &s)

{

s.fun();

}

void main()

{

A a;

   f(a);

   B b;

   F(b);

}

本课题目

      定义一个字符串类 str ,其基本属性是字符串首地址,功能函数如下,录入字符串,返回字符串首地址,输出字符串,取小写字母并构成串,在此基础上定义一个派生类S S 类能取大小字母并构成串,要求用多态解决本课题目。

#include<iostream >

using   namespace   std ;

class   str   // 基类

{

public :

    str ()

   {

      …… //动态开辟空间

   }

   ~ str ()

   {

  …… // 释放堆空间

   }

    char  * getch ()

   {

      ……   // 返回字符串首地址

   }

    void ss()

{

cout << "请输入字符串! " << endl ;

void   input ()   // 输入一个字符串以‘# ’结束输入

   {

  ss();

   ……

  

   }

    void   print ()  //输出字符串

   {

   ……

   }

     void   choice ( char  * k )  //取小写字母并连成串

   {

  ……

   }

private :

char  * p ;

};

class    S : public   str  

{

    public :

    S ()

   {

…… //动态开辟空间

   }

   ~ S ()

   {

   …… // 释放堆空间

   }

        void   input ()// 输入一个字符串以‘# ’结束输入

   { 

   ss();

    ……

   }

    void   print () //输出字符串

   {

    ……

   }

    char  * getch ()// 返回字符串首地址

   {

   ……

   }

    void   choice ( char  * r )// 取大写字母并练成串

    {

    ……

}

    private :

    char  * k ;

};

void   f ( str  & a )

{

a . input ();

a . choice ( a . getch ());

a . print ();

}

void   main ()

{

     str st;

S   s ;

         f ( st );

         f ( s );

}

© 著作权归作者所有

wyhuan
粉丝 1
博文 171
码字总数 146419
作品 0
大连
私信 提问
《鸡啄米C++编程入门系列》系列技术文章整理收藏

《鸡啄米C++编程入门系列》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201812.html 文章 鸡啄米:C++编程入门系列之前言 鸡啄米:C++编程入门系列之一(进制...

开元中国2015
2015/06/27
83
0
C++的多态

今天问到关于C++的多态性,作为面向对象的三大特性之一,这个也是很基础的,结果一时紧张,只答出来了使用虚函数来实现的多态这一点,后来面试官说还有模板呢啊,恍然大悟,回来后就多态性仔...

晨曦之光
2012/04/13
2.4K
0
cocos2d-x lua代码臃肿,有没有解决方案?客户端动态更新其他好建议吗?

近期开始学习并使用lua。软件分层的思想全世界可以用。但是纯lua的开发模式实现却很难使用多态和封装,也许是我水平低。面临的实际问题却是代码臃肿,不断的循环遍历(我在做解析文本)。我有...

王敬哲
2014/06/10
1K
4
C语言/C++编程学习—神奇设计模式代码之群星

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/03/26
0
0
《深度探索C++对象模型》读书笔记(1)

《深度探索C++对象模型》读书笔记(1)。 在C++中,有两种class data members:static和nonstatic,以及三种class member functions:static、nonstatic和virtual.已知下面这个class Point声...

长平狐
2012/10/08
84
0

没有更多内容

加载失败,请刷新页面

加载更多

刚哥谈架构 (二) 我眼中的架构师

之前在公司,有小伙伴在向别人介绍我的时候,经常会有人这么说:“刚哥是我们的architcture”,如果来人是老外,心中一定是一惊,心中暗叹,“这位匪首看上去貌不惊人,难道已经做到了架构和...

naughty
40分钟前
3
0
OSChina 周日乱弹 —— 别问,问就是没空

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @tom_tdhzz :#今日歌曲推荐# 分享容祖儿/彭羚的单曲《心淡》: 《心淡》- 容祖儿/彭羚 手机党少年们想听歌,请使劲儿戳(这里) @wqp0010 :周...

小小编辑
今天
111
4
golang微服务框架go-micro 入门笔记2.1 micro工具之micro api

micro api micro 功能非常强大,本文将详细阐述micro api 命令行的功能 重要的事情说3次 本文全部代码https://idea.techidea8.com/open/idea.shtml?id=6 本文全部代码https://idea.techidea8....

非正式解决方案
今天
5
0
Spring Context 你真的懂了吗

今天介绍一下大家常见的一个单词 context 应该怎么去理解,正确的理解它有助于我们学习 spring 以及计算机系统中的其他知识。 1. context 是什么 我们经常在编程中见到 context 这个单词,当...

Java知其所以然
昨天
5
0
Spring Boot + Mybatis-Plus 集成与使用(二)

前言: 本章节介绍MyBatis-Puls的CRUD使用。在开始之前,先简单讲解下上章节关于Spring Boot是如何自动配置MyBatis-Plus。 一、自动配置 当Spring Boot应用从主方法main()启动后,首先加载S...

伴学编程
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部