__super

__super::member_function();
        The __super keyword allows you to explicitly state that you are calling a base-class implementation for a function that you are overriding. 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.

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)
   }
};

int main() {
}

这样子成员函数能够调用父的成员函数


				
时间: 2024-09-29 15:56:52

__super的相关文章

VC++中的__super::

在学习别人的代码时,发现了一个__super,第一感觉很像java中的super,或者C#中的base网上查了一下发现作用差不多,都是指父类.C++本身没有__super,这是visual c++的扩展.其实在c++中,要使用父类的成员,可以直接用"父类名::成员"即可,或者利用using声明. 来自Microsoft的解释: __super Microsoft Specific The __super keyword allows you to explicitly state th

Objective-C基础1:OC中类的继承和组合

1.类的定义和声明 OC中的类声明是以@interface开始@end结束. OC中的类定义以@implementation开始@end结束. OC中的方法声明: - (void) setName : (NSString*) strName;前面的短线-表示这是一个方法,(void)表示返回值, setName表示方法名称,(NSString*) StrName表示参数是NSString*类型,名称是strName,注意:()一定要加 OC中的成员变量定义在类声明的{}中,这一点跟方法声明不一样

Duilib学习(一)

#pragma once #include <UIlib.h> using namespace DuiLib; #ifdef _DEBUG # ifdef _UNICODE # pragma comment(lib, "DuiLib_ud.lib") # else # pragma comment(lib, "DuiLib_d.lib") # endif #else # ifdef _UNICODE # pragma comment(lib, "

DirectUI 学习笔记2-DUI HellowWorld程序

经过上一章的配置之后,我们有了duilib的环境,现在我们可以开始编写一个DUI程序. 如果你还不会如何下载与配置Duilib,请移步<DirectUI 学习笔记1-源码下载与环境配置> A:我们新建一个类去继承DUI提供给我们的基类 #include pragma once #include <UIlib.h> //如果你附加目录设置的正确,这里不会找不到 using namespace DuiLib; //下面的预处理指令用来判断是否项目使用了unicode与对应的debug于

JSPatch实现原理详解

本文转载至 http://blog.cnbang.net/tech/2808/ JSPatch以小巧的体积做到了让JS调用/替换任意OC方法,让iOS APP具备热更新的能力,在实现 JSPatch 过程中遇到过很多困难也踩过很多坑,有些还是挺值得分享的.本篇文章从基础原理.方法调用和方法替换三块内容介绍整个 JSPatch 的实现原理,并把实现过程中的想法和碰到的坑也尽可能记录下来. 基础原理 能做到通过JS调用和改写OC方法最根本的原因是 Objective-C 是动态语言,OC上所有方法的

第二十五篇:在SOUI中做事件分发处理

不同的SOUI控件可以产生不同的事件.SOUI系统中提供了两种事件处理方式:事件订阅 + 事件处理映射表(参见第八篇:SOUI中控件事件的响应) 事件订阅由于直接将事件及事件处理函数连接,不存在事件分发的问题,这里主要介绍使用事件映射表时的事件分发. 在回答这个问题前,首先了解一下什么是事件分发. 在大型项目中,程序逻辑可能非常复杂,如果将所有UI中控件的事件处理集中在一个消息/事件映射表里,代码的可维护性会变得非常差.解决这个问题常见的方法就是将事件进行分类(如根据来源分类),不同类别的事件采

Duilib学习三 响应按钮

1 #pragma once 2 #include <UIlib.h> 3 using namespace DuiLib; 4 5 #ifdef _DEBUG 6 # ifdef _UNICODE 7 # pragma comment(lib, "DuiLib_ud.lib") 8 # else 9 # pragma comment(lib, "DuiLib_d.lib") 10 # endif 11 #else 12 # ifdef _UNICODE

Duilib学习二 第一个程序 Hello World

Duilib学习二  第一个程序 Hello World #pragma once #include <UIlib.h> using namespace DuiLib; #ifdef _DEBUG # ifdef _UNICODE # pragma comment(lib, "DuiLib_ud.lib") # else # pragma comment(lib, "DuiLib_d.lib") # endif #else # ifdef _UNICOD

C++关键字(保留字)

C++ 关键字       __abstract 2 __alignof 运算符 __asm __assume __based __box 2 __cdecl __declspec __delegate 2 __event __except __fastcall __finally __forceinline __gc 2 __hook 3 __identifier __if_exists __if_not_exists __inline __int16 __int32 __int64 __in