在C++标准中是否有东西妨碍我超负荷超重履行超级班级职能?
从这个课堂开始:
class A { // super class
int x;
public:
void foo (int y) {x = y;} // original definition
};
class B : public A { // derived class
int x2;
public:
void foo (int y, int z) {x2 = y + z;} // overloaded
};
I can call B::foo()
easily:
B b;
b.foo (1, 2); // [1]
但是,如果我试图打上<代码>A:foo(......
B b;
b.foo (12); // [2]
...... 我发现一个汇编错误:
test.cpp: In function void bar() :
test.cpp:18: error: no matching function for call to B::foo(int)
test.cpp:12: note: candidates are: void B::foo(int, int)
为了保证我没有一件事,我改变了<代码>的名称。 B功能,以便无超载:
class B : public A {
int x2;
public:
void stuff (int y, int z) {x2 = y + z;} // unique name
};
现在,我可以使用第二个例子打电话A:foo(
。
这一标准吗? I m使用g++。