c++ 模板(1) 模板的声明以及类型别名
来源:互联网 发布:我是歌手网络直播地址 编辑:程序博客网 时间:2024/05/01 08:31
模板的前置声明
template <typename> class Foo;template <typename T> bool operator==(const Foo<T>&, const Foo<T>&);
友元的声明
一对一友好关系
template <typename> Foo;template <typename T>bool operator==(const Foo<T> &, const Foo<T> &);template <typename T>class Object{// 每个Object实例将访问权限授予用相同类型实例化的Foo和相等运算符friend class Foo<T>;friend bool operator==<T>(const Foo<T> &, const Foo<T> &);};
通用和特定的模板友好关系
template <typename T> class Pal;class C{// 用类C实例化的Pal是C的一个友元friend class Pal<C>;// Pal2的所有实例都是C的友元; 这种情况无需前置声明template <typename T> friend class Pal2;};template <typename T> class C2{// C2的每个实例将相同实例化的Pal声明为友元; Pal的模板声明必须在作用于之内friend class Pal<T>;// Pal2的所有实例都是C2的每个实例的友元,不需要前置声明template <typename X> friend class Pal2;// Pal3是一个非模板类, 它是C2所有实例的友元friend class Pal3;};
为了让所有实例成为友元, 友元声明中必须使用与类模板本身不同的模板参数.
令模板自己的类型参数成为友元(c++11)
template <typename Type>class Bar{friend Type; // 将访问权限授予用来实例化Bar的类型};
虽然友元通常来说应该是一个类或是一个函数,但我们完全可以用一个内置类型来实例化Bar.这种与内置类型的友好关系是允许的,以便我们能用内置类型来实例化Bar这样的类.
模板类型别名(c++11)
为类模板定义一个类型别名:
template <typename T> using twin = std::pair<T, T>;template <typename T> using partNo = std::pair<T, unsigned>;一个模板类型别名是一族类的别名.
当我们定义一个模板类型别名时,可以固定一个或多个模板参数
阅读全文
0 0
- c++ 模板(1) 模板的声明以及类型别名
- using 模板的别名
- 模板别名
- 模板别名
- c++:模板的类型萃取
- c++:模板的类型萃取
- 【C/C++学院】0825-类模板/final_override/类模板与普通类的派生类模板虚函数抽象模板类/类模板友元/位运算算法以及类声明/Rtti 实时类型检测/高级new创建/类以及函数包装器
- 模板类型的模板参数
- 模板、模板别名、c++风格数组别名
- [c++]模板的类型推导--数组
- C++ template 模板 模板别名
- 模板以及类型自动推导
- C++ 模板类的声明与定义
- [C++]模板类的声明与实现分离问题
- [c++ template]非类型的函数模板以及非类型的类的模板
- AJAX声明XMLHttpRequest的模板
- 模板的声明与定义
- C++模板类的声明
- java线程池介绍(一)
- Native VLAN
- 电商订单技术方案梳理
- C++相关问题
- mybatis分页/分页插件
- c++ 模板(1) 模板的声明以及类型别名
- 北大算法分析和复杂性理论-2017算法课第一次作业E:二叉树的操作
- 欢迎使用CSDN-markdown编辑器
- 如何定义一个只能在堆上(或栈上)生成对象的类
- 从零开始前端学习[1]:认识常用的标签
- SQL(DB2)学习20170913
- 判断一个字符串中出现次数最多的字符,统计这个次数
- Oracle基础知识
- VPN连接