【问题标题】:Is this polymorphism (C++ / Procedural way of programming)?这是多态性(C++ / 程序化编程方式)吗?
【发布时间】:2018-06-01 06:08:25
【问题描述】:

我想知道这是否是 c++ 中的多态性示例。我检查了 OOP 中的示例,但我没有发现任何纯程序化的编程方式。 提前感谢您的回答!

#include <iostream>
using namespace std;

int return_value(int a) {
return 5;
}
char return_value(char b) {
return 'a';
}
int main() {
    int a = 1;
    char b = 'c';
    cout << return_value(a);
    cout << return_value(b);
    return 0;
}

【问题讨论】:

  • 这不是多态性。
  • 这不是多态性;它是重载。那里有一整套多态性的例子。所需要的只是寻找。
  • 我当然找到了很多例子......但我不知道我的例子是否是多态的例子......基于一个函数可以有很多的解释(众多之一)形状......它可能是......

标签: c++ polymorphism


【解决方案1】:

多态性意味着一个名称多种形式。 从这个意义上说,即使是函数重载也是一种多态性,因为相同的名称为您提供了不同的功能。

有些人将多态性分类为编译时多态性和运行时多态性。函数重载是编译时多态的一种情况。虚函数是运行时多态的例子。

所以是的,您的代码是编译时多态性的一个示例。

有关运行时和编译时多态性之间差异的更多详细信息,请参阅What is the difference between dynamic and static polymorphism in Java?

【讨论】:

    【解决方案2】:

    这只是一个重载的函数,它在某种程度上可以被认为是多态性。 但是,在这里您可以找到更多关于多态性的信息:

    Polymorphism in c++

    【讨论】:

    • 谢谢!根据您建议的文章,我可以假设我的问题的答案是 YES =)
    【解决方案3】:

    这不是多态,here 你可能会发现多态及其变体。

    【讨论】:

    • @JanezMurn 重载意味着创建具有相同名称但不同参数的方法。覆盖意味着在子类中重新定义超类方法的主体以改变方法的行为。多态性是一个广泛的概念,包括覆盖和重载等等。 see here
    【解决方案4】:

    这可以被认为是编译时多态的。运行时多态性的一个例子是在基类中使用虚函数并在扩展类中覆盖这些函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-20
      • 1970-01-01
      • 2011-09-26
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多