首页 > 编程语言 >C++模板编程学习-using-declaration中的依赖型名称

C++模板编程学习-using-declaration中的依赖型名称

时间:2022-10-22 22:11:45浏览次数:46  
标签:C++ 名称 declaration using BX 模板

《C++ Templates》 9.3.4 using-declaration中的依赖型名称

学无止境,看到C++模板的第九章中的使用声明从两个位置(类和名字空间)引入名称,当引入名字空间不会涉及上下文问题,因为并不存在名字空间模板,但使用类引入名称的using-declaration能力有限,只能把基类的名称引入到派生类。这种using-declaration的行为有些类似于派生类访问基类的符号链接或者快捷方式。书中举例代码:

class  BX {
  public:
      void f(int);
      void f(char const *);
      void g();
};

class  DX: private BX {
  public:
    using BX::f;

};

当看到上述代码,第一感觉就是这是C++单例模式啊!using-declaration引入基类(BX)中的名称f到派生类DX中。using-declaration将以前不能访问的成员现在变为可以访问的。

标签:C++,名称,declaration,using,BX,模板
From: https://www.cnblogs.com/huhuhusanling/p/16817447.html

相关文章

  • C++20实践入门 第6版 电子书 pdf
    作者:[比]艾弗·霍尔顿(IvorHorton),/[比]彼得·范·维尔特(PeterVanWeert)出版社:清华大学出版社原作名:BeginningC++20FromNovicetoProfessionalSixthEdi......
  • 现代C++白皮书 电子书 pdf
    链接:现代C++白皮书   本文重点关注ISOC++标准在2011年、2014年、2017年和2020年的修订版中的重大变化。标准库在篇幅上约占C++20标准的四分之三,但本文的主要重点......
  • 周六1900C++班级20221022-for循环
    for语法:for(initialization;test-condition;increment){statement-list;}for构造一个由4部分组成的循环:初始化,可以由0个或更多的由逗号......
  • [RxJS] Append values to a stream using startWith and endWith (countdown$)
    //beginlessoncodeimport{interval,fromEvent,of}from'rxjs';import{scan,mapTo,takeWhile,takeUntil,tap,startWith,endWith}from'rxjs/operators......
  • UEC++ 多线程(二) AsyncTask
    AsyncTaskAsyncTask系统实现的多线程与自己实现继承的FRunnable实现的原理相似,还可以利用UE4提供的线程池。当使用多线程不满意时也可以调用StartSynchronousTask改成主线......
  • c++11新特性之变参模板与完美转发
    示例:  运行结果:   运行结果:这说明了,这里的临时变量生命周期很短,它仅生存在push_back()的括号之内。说是即生即死也不为过。  以上两种情况会带来效率问......
  • Dev-C++ 动态调试功能
    Dev动态调试今天发现了Dev还有这个功能,感觉十分神奇,于是记录一下设置要想使用动态调试,我们必须要先打开"产生调试信息"选项这是我们的页面,这是可以看到上方有一行......
  • C++ 核心 2.引用
    2引用2.1引用的基本使用作用:给变量起别名语法:数据类型&别名=原名inta=10;int&b=a;b=100;cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;2.2......
  • C++ 核心 2.引用
    2引用2.1引用的基本使用作用:给变量起别名语法:数据类型&别名=原名inta=10;int&b=a;b=100;cout<<"a="<<a<<endl;cout<<"b="<<b<<endl;2.2......
  • C++ 核心 3. 函数进阶
    3函数进阶3.1默认参数语法:返回值类型函数名(参数=默认值){}e:intfunc(inta,intb=10,intc=100){returna+b+c;}注意事项:1.默认参数应该在非默认参数......