我想知道这是否是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 <<
以下是布鲁斯·埃克尔的“Thinking in C++”第一卷(第716页,para2)中的几句话:
“多态是一种不能孤立地看待的特性(例如,像const或switch语句),而只能作为类关系的”大图景“的一部分协同工作。人们经常被C++的其他非面向对象的特性所迷惑,比如重载和默认参数,它们有时被表示为面向对象。不要上当受骗;如果它不是后期绑定,它就不是多态。”
我不能清楚地理解这一点,.Does他的意思是没有像编译时多态性这样的东西?
我在试着自己去理解,OCaml语言有哪种形式的多态。
我得到了一个例子
let id x = x
这个示例不是等同于C++模板函数吗
template<class A> A id(A x) { return x; }
如果是这样,那么我的问题是: OCaml中是否还有其他形式的多态性?在命令式语言的世界中,这个概念被称为“通用算法”,而不是“多态性”。
对于具有虚拟函数的bass类,通常称为“多态基类”。在本例中,Car类
class Car
{
virtual void drive(){std::cout << "drive right";}
};
class EuropeCar: public Car
{
void drive(){std::cout << "drive left";}
}
polymorphic base class是一般俚语,如pure abstract class,还是C++标准的一部分?
我在Visual Studio2005中有以下C++代码...
class Base {};
class Derived : public Base {};
class Other {
public:
Other(const Base& obj) {}
void test() {}
};
int _tmain(int argc, _TCHAR* argv[])
{
Other other(Derived());
other.test();
return 0;
}
..。编译失败,并产生以下结果:
test.cpp(19) : error C2228: left of
我将一个派生类传递到一个函数中,使用Python3.3和swg2.0.10作为基类。
同样的SWIG .i文件也被用于C#,并且运行良好。但是,在Python中,SWIG报告没有接受派生类型的C++方法--只有接受基本类型的方法。该语句是正确的,但我需要传递派生类型,并让SWIG像基本类型一样直接调用。
派生类型在C++中不存在。它只存在于Python (和C#)中。然而,我们已经启用了董事,正如所述,它在C#中运行良好。
Python2.6和2.7的结果相同。
C++
class Base {};
// Note: there is NO "class Derived" in