对于__super关键字,MSDN中是这样描述的:
__super
Microsoft 专用
允许您显式,指出您调用您要重写的函数的一个基类的实现。
__super::member_function();
备注
在重载决策阶段,任何可访问的基类方法,考虑,并提供最佳匹配的函数是调用的脚本。__super 可以在成员函数体内仅显示。
使用声明,__super 不能与一起使用时。 有关更多信息,请参见使用声明。
插入代码 属性 的介绍,代码可能包含名称不可能知道,但请包含方法要调用的一个或多个基类。
示例
// deriv_super.cpp
// compile with: /c
struct B1 {
void mf(int) {}
};
struct B2 {
void mf(short) {}
void mf(char) {}
};
struct D : B1, B2 {
void mf(short) {
__super::mf(1); // Calls B1::mf(int)
__super::mf('s'); // Calls B2::mf(char)
}
};
杂谈
参考http://blog.csdn.net/peterpan19890802/article/details/5459631的博客,__super可以描述为某个基类的代替符,具体是哪个基类无需自己操心,只要不存在接口定义冲突(多继承情况下,不同基类定义的相同接口),编译器会自动完成基类的匹配过程。若冲突,编译器会报错(此处未测试),可根据报错信息修改~
其实这个__super关键字我本不知道,还是参考OC中的super关键字,打出来后,在VC助手提示下发现的,百度了下才知道意思……