C++ __super

来源:互联网 发布:mac teamviewer 免费 编辑:程序博客网 时间:2024/06/06 17:52
实习第二天,协助同事解决问题。
发现了一个__super,第一感觉很像java中的super,网上查了一下发现作用差不多,都是指父类。
C++本身没有__super,这是visual c++的扩展。
其实在c++中,要使用父类的成员,可以直接用”父类名::成员”即可,或者利用using声明。

C++ Language Reference 

__super 

Microsoft Specific

Allows you to explicitly state that you are calling a base-class implementation for a function that you are overriding. 


__super::member_function();

Remarks

All accessible base-class methods are considered during the overload resolution phase, and the function that provides the best match is the one that is called.

__super can only appear within the body of a member function.

__super cannot be used with a using declaration. See using Declaration for more information.

With the introduction of attributes that inject code, your code might contain one or more base classes whose names you may not know but that contain methods that you wish to call.

Example

// deriv_super.cpp// compile with: /cstruct 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)   }};

END Microsoft Specific

See Also

Reference

C++ Keywords 
2 0
原创粉丝点击