您的位置:首页 > 编程语言 > C语言/C++

c++只支持单分派(single dispatch)

2007-01-09 18:30 302 查看
c++不支持双分派(double dispatch)和多分派(multi-dispatch),只支持单分派(single dispatch)。一个典型的不支持双分派的例子如下所示:

#include <iostream>
using namespace std;

class B
{
public:
virtual void print()
{cout << "c" << endl;}
};

class E1 : public B
{
public:
void print()
{cout << "E1" << endl;}

};

class E2 : public B
{
public:
void print()
{cout << "E2" << endl;}

};

class A
{
public:
virtual void output(B* p)
{cout << "A" << endl;p->print();}
};

class D1 : public A
{
public:
void output(B* p)
{cout << "D1" << endl;p->print();}
};

class D2 : public A
{
public:
void output(B* p)
{cout << "D2" << endl;p->print();}
};

void f(A* p, B* q)
{
p->output(q);
}

int main()
{
A * pd1 = new D1;
B * pe1 = new E1;

f(pd1, pe1);

end:
int end;
cin >> end;
return 0;
}

该程序build信息如下:

--------------------Configuration: test - Debug--------------------
Compiling source file(s)...
test.cpp
test.cpp: In function `int main()':
test.cpp:60: warning: label `end' defined but not used
test.cpp:64:2: warning: no newline at end of file
Linking...
C:/MinGWStudio/MinGW/bin/../lib/gcc/mingw32/3.4.2/../../../../mingw32/bin/ld.exe: cannot open output file D:/Project/acm/test/Debug/test.exe: Permission denied
collect2: ld returned 1 exit status

test.exe - 1 error(s), 2 warning(s)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: