cpp typename关键字
泛型编程关键字,C#内也有这个概念。
非从属名称(non-dependent names):
不依赖任何template参数的名称, 如int value;
从属名称(dependent names):
模板内出现的名称, 相当于某个模板参数
嵌套从属名称(nested dependent names):
从属名称在class内呈嵌套装, 如T::const_iterator ci;
#include <iostream>
#include <memory>
#include <list> using namespace std; template<typename T>
class A1 {
public:
class A11 {
public:
A11(int i) {}
void fun1() {};
};
}; template<typename T>
class B1 : public A1<T>::A11 {//这里不需要加typename [基类列表]
public:
B1(int i0):A1<T>::A11(i0)//这里不需要加typename [成员初值列表]
{
}
int fun1(T Is) {
typename A1<T>::A11 a0();//这里要加typename [嵌套从属名称]
a0.fun1();
typename T::iterator i0(Is.begin());//这里要加typename [嵌套从属名称]
i0++;
return *i0;
}
}; int main()
{
list<int> i0 = {,,};
B1<list<int>> b0();
std::cout << b0.fun1(i0) << "\n";
return ;
}
VS内嵌套从属名称不加typename也可编译通过,但智能提示会不灵。加上后格式正常。
cpp typename关键字的更多相关文章
- typedef和typename关键字
.类型说明typedef 类型说明的格式为: typedef 类型 定义名; 类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型.定义名表示这个类型的新名字. 例如: 用下面语句定义整型数 ...
- C++中typename关键字的用法
我在我的 薛途的博客 上发表了新的文章,欢迎各位批评指正. C++中typename关键字的用法
- typename 关键字
1.class关键字的同义词 template <typename T> const T& max(const T& x, const T& y) { return ...
- <转>详解C++的模板中typename关键字的用法
用处1, 用在模板定义里, 标明其后的模板参数是类型参数. 例如: template<typename T, typename Y> T foo(const T& t, const ...
- cpp extern 关键字用法
语法说明: extern 可以置于变量或者函数前,以标示变量或者函数的在别的文件中定义,提示编译器遇到此变量和函数后,在其他模块中寻找其定义.此外extern也可用来进行链接指定. 即 extern ...
- C++ 类模板四(typename关键字)
- 从零开始学C++之模板(三):缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
一.缺省模板参数 回顾前面的文章,都是自己管理stack的内存,无论是链栈还是数组栈,能否借助标准模板容器管理呢?答案是肯定的,只需要多传一个模板参数即可,而且模板参数还可以是缺省的,如下: temp ...
- 缺省模板参数(借助标准模板容器实现Stack模板)、成员模板、关键字typename
一.缺省模板参数 回顾前面的文章,都是自己管理stack的内存,无论是链栈还是数组栈,能否借助标准模板容器管理呢?答案是肯定的,只需要多传一个模板参数即可,而且模板参数还可以是缺省的,如下: temp ...
- C++中的关键字用法---typename
1. typename 关键字 "typename"是一个C++程序设计语言中的关键字.当用于泛型编程时是另一术语"class"的同义词.这个关键字用于指出模板 ...
随机推荐
- 使用 Spring Cloud Stream 构建消息驱动微服务
相关源码: spring cloud demo 微服务的目的: 松耦合 事件驱动的优势:高度解耦 Spring Cloud Stream 的几个概念 Spring Cloud Stream is a ...
- pagehelper 使用
MySQL对分页的支持 简单来说MySQL对分页的支持是通过limit子句.请看下面的例子. limit关键字的用法是 LIMIT [offset,] rows offset是相对于首行的偏移量(首行 ...
- 笔记:用标准c写 com dll
在 [XXX.idl] 中 1. 如果想在脚本语言中传递一个值,并且在dll(c代码)中修改这个值并返回的话, 这个参数必须写为:[in, out] VARIANT* 如果写成 [in, out] i ...
- 关于TSql
1.Sql:结构化查询语言(Structrued Query Language) 2.TSql:是Sql语言的另一种版本,且只能在SqlServer中使用.和Sql不同的是,TSql中增加了对变量 ...
- noi.openjudge 1.13.44
http://noi.openjudge.cn/ch0113/44/ 总时间限制: 1000ms 内存限制: 65536kB 描述 将 p 进制 n 转换为 q 进制.p 和 q 的取值范围为[2 ...
- win命令大全
Windows系统:开始--运行--命令大全 Nslookup-------IP地址侦测器 explorer-------打开资源管理器 logoff--- ...
- asp一句话
<%eval""&("e"&"v"&"a"&"l"&& ...
- 洛谷P2770 双路DP // 网络流
https://www.luogu.org/problemnew/show/P2770 第一眼看过去,觉得这不是一个经典的双路DP模型吗,将一条过去一条回来互不相交的路径看作是起点出发了两条路径一起走 ...
- ECharts基础
echarts: js引用:<script type="text/javascript" src="js/echarts.js"></scri ...
- Spring Boot学习记录02_构建SpringBoot工程_通过idea构建
1.通过idea新建工程 2.Initial Service Url指向的地址就是Spring官方提供的Spring Initializr工具地址 3.结合情况进行设置 4.这里我选择的版本是1.5. ...