社区
C语言
帖子详情
C++中的什么是多态性,怎样才算是实现了多态性?
zm_speed
2001-10-25 11:29:01
加精
学C++,一直不懂多态性,高手请讲的详细点。
...全文
1609
19
打赏
收藏
C++中的什么是多态性,怎样才算是实现了多态性?
学C++,一直不懂多态性,高手请讲的详细点。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cowboy1114
2002-02-07
打赏
举报
回复
利用虚函数
holylaker
2002-02-05
打赏
举报
回复
堕胎的定义:一个接口,多种算法。
堕胎的形式:
1.虚函数
2.函数重载(overload)
3.模板
4.宏
...
不是只有虚拟继承才叫堕胎。
tiger_wkh52741
2002-01-06
打赏
举报
回复
多太性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,即用同样的接口访问
功能不同的函数,从而实现了一个接口,多种方法
coolmantis
2001-11-11
打赏
举报
回复
oooooo
demonsol
2001-10-27
打赏
举报
回复
一句话 玩通虚拟继承
code_tin
2001-10-27
打赏
举报
回复
少了一句
CALSS B:A
code_tin
2001-10-27
打赏
举报
回复
CLASS A::M
CLASS B::M
M就是多态的产物
aihen
2001-10-27
打赏
举报
回复
多态性
例,画是一个操作,他作用于一个对象圆,就画圆,作用于一个对象三角,就画三角,
whhif
2001-10-26
打赏
举报
回复
比如C中的?运算符
int main()
{
int a,b,c;
printf("please input the a and b:\n");
scanf("%d",&a);
scanf("%d",&b);
c=a>b?1:2;
printf("the c is %d",c);
return 0;
}
这里的c就是一个多态,
不要以为只有C++才有多态,
在这里C有可能是1也可能是2,
不能确定,只有在程序运行时,
才能确定C的值,这就是简单的多态,
但是这是多态性的基本特性,
在C++中,
多态可以用接口来实现,
即提供一些用途的公共端,
用C来实现,
即是两个结构来模拟:
typedef struct TagA
{
void fun1();
void fun2();
void fun3();
.
.
.
void funn();
}A;
typedef TagVirtualA
{
A *this;
}VirtualA;
在程序中可用:
int main()
{
VirtualA *PointA;
PointA->this->fun1();
PointA->this->fun2();
.
.
.
PointA->this->funn();
return 0;
}
此时,PointA即是这个结构的一个接口,
在程序中可用这个接口来实现不同的功能,
在C++中可以用继承来增加接口的功能,
即有若干个A结构,通过它是一个指针,
可以有不同的功能实现,
但只有在程序运行中才能确它是具体功能,
这就是多态.
firecloud
2001-10-26
打赏
举报
回复
多态性就是不同的对象对同一消息会有不同的反映,比如说对一个画消息,rect对象会画一个方形,而circle对象则会画一个圆。
gffly
2001-10-26
打赏
举报
回复
主要体现在了继承和函数重载
honey
2001-10-26
打赏
举报
回复
多态性举例说明:
比如水 可以变成冰,冰又可以融化成水,水又可以变成蒸汽。。。。蒸汽又可以分解成H2和 O2 。。。。。
honey
2001-10-26
打赏
举报
回复
任何物体或事物都可以有多种形态形式存在,这就是多态性。。。:)
zm_speed
2001-10-26
打赏
举报
回复
因为和同学讨论多态性,我们都持不同的意见。所以问问你们对多态性的理解。
Downwind
2001-10-25
打赏
举报
回复
看看Lippman是怎么说的 —— 以一个public base class的指针(或 reference),寻址一个
derived class object
kingofark
2001-10-25
打赏
举报
回复
推荐几本:
Stanley Lippman <Essential C++>,华中科技大学,中文版
Bjarne Stroupstrup <The C++ Programming Language se>(C++程序设计语言),高教,影印版
<Programming In C++>(C++程序设计),高教,影印版
Bruce Eckel <Thinking In C++>, www.bruceeckel.com, 英文版
<C++ Effective Object-Oriented Software Construction>(C++面向对象高效编程),人民邮电,中文版
<The Standard C++ Bible>(标准C++宝典),清华,中文版
《C++大学教程》,机械工业,中文版
《21天学通C++》,人民邮电,中文版
这些都是国内能买到的。你有其中任意一本,就可以学到多态的知识。
在这里我就不讲解了,因为打字很麻烦也没必要,不如你自己看些书(上面提到的书都讲得很清楚)
gigix
2001-10-25
打赏
举报
回复
去文档中心,看holyfire专栏去。
cwzhq
2001-10-25
打赏
举报
回复
举个例子:
以前, 实现了动物类, 并提供了个叫繁殖的接口, 以后就可以统一的对所有知名, 不知名,甚至基因新组的怪动物调用这个接口, 用动物基本类的指针指向具体动物就好了, 而各种动物相应的繁殖方法会被调用, 鸡还是下蛋, 不会直接生小鸡了.当然这个繁殖的接口必须用虚函数virtual 定义. 想了解实现的底层机制请看侯捷的深度探索c++对象模型
rick1126
2001-10-25
打赏
举报
回复
多态性按照我的理解是通过继承实现的, 针对同一个基类的不同派生类可以实现同一个虚函数的不同实现, 从状态空间讲就是派生的子类实现了基类状态空间的不同扩展得到同一个虚函数的不同形态, 至于多继承即同时继承两个子类就会发生编译错误.
// debugTest.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "afx.h"
#include "comutil.h"
#include "string.h"
#include "iostream.h"
void memTest()
{
//使用bstr_t类型转换
CString strTest = "Hello World";
bstr_t bsTest = bstr_t(strTest);
int nTest = 1;
bstr_t bsnTest = bstr_t("1");
}
void memCheck()
{
//内存泄漏测试
CMemoryState oldMemState, newMemState, diffMemState;
oldMemState.Checkpoint();
memTest();
newMemState.Checkpoint();
if ( diffMemState.Difference( oldMemState, newMemState ) )
diffMemState.DumpStatistics();
}
class base{
public:
virtual void mpoly() = 0;
};
class child1: public base{
public:
void mpoly(){ cout<<"This is child1's virtual function\n"; }
};
class child2: public base{
public:
void mpoly(){ cout<<"This is child2's virtual function\n"; }
};
class child12: public child1, child2{
public:
//覆盖!!!
void mpoly(){ cout<<"This is child12's virtual function\n"; }
};
void mpolyCheck()
{
child1 cd1;
child2 cd2;
child12 cd12;
cd1.mpoly();
cd2.mpoly();
cd12.mpoly();
}
int main(int argc, char* argv[])
{
mpolyCheck();
return 0;
}
C++
之
多态性
本文探讨了
C++
中
的
多态性
,包括编译时和运行时多态,以及如何通过虚函数和抽象类
实现
多态。
多态性
允许不同对象对同一消息作出不同响应,如在买票示例
中
,不同角色有不同的票价。通过虚函数表,
C++
在运行时
实现
动态绑定,使得程序可以根据对象的实际类型调用相应的方法。
浅谈
C++
多态性
本文深入探讨
C++
中
的
多态性
概念,包括其
实现
方式、作用及注意事项。重点介绍了虚函数、纯虚函数和抽象类等内容,并通过具体示例进行说明。
C++
中
的
多态性
实现
原理
本文聚焦
C++
运行时
多态性
,介绍其通过虚函数和继承
实现
。详细阐述运行时
多态性
依赖的虚函数、虚表(vtable)和虚指针(vptr)机制,包括虚表定义、特性,虚指针工作原理等,还给出示例代码,展示如何
实现
运行时
多态性
。
C++
基础:什么是
C++
的
多态性
本文介绍了
C++
中
的
多态性
,包括其定义、纯虚函数的作用,以及
多态性
与非
多态性
的区别。
C++
通过虚函数
实现
运行时
多态性
,允许子类重写父类的虚函数。
多态性
使得通过基类指针调用子类方法成为可能,提高了代码的接口重用。同时,文章提到了纯虚函数用于创建抽象类,抽象类不能实例化,但强制派生类定义相关方法。此外,还讨论了虚析构函数、编译时
多态性
和运行时
多态性
的区别,以及类成员和数据成员的初始化规则。
解释
C++
中
的
多态性
,以及如何
实现
运行时
多态性
?
本文详细解释了
C++
中
的
多态性
,包括编译时多态(函数重载和模板)和运行时多态(通过虚函数和继承
实现
),重点介绍了运行时多态的
实现
机制,如虚函数、虚函数表和动态绑定过程。,
C语言
70,038
社区成员
243,247
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章