首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多态性(类型)

多态性(类型)
EN

Stack Overflow用户
提问于 2014-12-11 20:38:56
回答 2查看 90关注 0票数 0

以下是布鲁斯·埃克尔的“Thinking in C++”第一卷(第716页,para2)中的几句话:

“多态是一种不能孤立地看待的特性(例如,像const或switch语句),而只能作为类关系的”大图景“的一部分协同工作。人们经常被C++的其他非面向对象的特性所迷惑,比如重载和默认参数,它们有时被表示为面向对象。不要上当受骗;如果它不是后期绑定,它就不是多态。”

我不能清楚地理解这一点,.Does他的意思是没有像编译时多态性这样的东西?

EN

回答 2

Stack Overflow用户

发布于 2014-12-11 21:19:12

他的意思是没有编译时多态性这样的东西吗?

不是的。他的意思是,与C++标准一样,他使用术语“多态性”专门指动态(运行时)多态性,C++通过继承和虚函数支持这种多态性。

C++还通过模板和函数重载支持所谓的“静态(编译时)多态性”或“泛型”。在C++的上下文中,我们倾向于不使用术语“多态性”,以避免与标准以及该术语的不同含义相混淆。

票数 2
EN

Stack Overflow用户

发布于 2014-12-11 20:43:06

他说了下面的话。

这是多态性的一个例子。

代码语言:javascript
复制
class A
{
    virtual void foo() { std::cout << "Base class" << std::endl; }
};

class B : public A
{
    virtual void foo() override { std::cout << "Derived class" << std::endl; }
};

这只是过载,他说他不认为这是面向对象的

代码语言:javascript
复制
// 3 overloads of a function
int foo(int x);
int foo(double x);
int foo(int x, double y);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27423129

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档