【C++新特性——using】

1typedef&using 类型定义别名

cpp 复制代码
#include<iostream>
using namespace std;

void f(int index)  //事例函数指针
{
	cout << "void f(int)->" << index << endl;

}

int main()
{
	//typedef:  旧名  新名
	typedef unsigned int x;    

	//using:    新名=旧名
	using y = unsigned int;

	//函数指针拉开二者区别
	void(*i)(int) = f;    //最原始的函数指针
	typedef void(*x2)(int);     //不熟悉typedef和函数指针的看不出来x2是别名

	using y2 = void(*)(int);    //这个就非常简单明了y2就是别名

	return 0;
}

2模板定义别名

cpp 复制代码
#include<iostream>
#include<vector>
#include<map>
using namespace std;

template<typename T = int>
//typedef vector<T> k;   //报错    typedef做不到

class base {  //正确:typedef需要一个类辅助
public:
	typedef vector<T> k;  

};


template<typename T = int>
using t = vector<T>;
int main()
{	
	t<> x = { 1,1,1,1 };
	for (auto i : x)
		cout << i << " ";

	base<>::k y = { 2,2,2,2 };

	return 0;
}

最后在强调一点:using语法和typedef一样,并不会创建出新的类型,它们只是给某些类型定义了新的别名。using相较于typedef的优势在于定义函数指针别名时看起来更加直观,并且可以给模板定义别名。

using的使用 | 爱编程的大丙

相关推荐
江公望1 分钟前
Qt QML实现无边框窗口
开发语言·qt
深耕AI3 分钟前
【MFC典型类和函数:CString的字符串魔法与Afx全局函数的便利店】
c++·mfc
怀旧,6 分钟前
【C++】19. 封装红⿊树实现set和map
linux·c++·算法
凯子坚持 c15 分钟前
Redis核心通用命令深度解析:结合C++ redis-plus-plus 实战指南
c++·redis·log4j
往事随风去15 分钟前
Redis的内存淘汰策略(Eviction Policies)有哪些?
redis·后端·算法
秦禹辰24 分钟前
宝塔面板安装MySQL数据库并通过内网穿透工具实现公网远程访问
开发语言·后端·golang
黄焖鸡能干四碗30 分钟前
智慧教育,智慧校园,智慧安防学校建设解决方案(PPT+WORD)
java·大数据·开发语言·数据库·人工智能
神里流~霜灭37 分钟前
(C++)数据结构初阶(顺序表的实现)
linux·c语言·数据结构·c++·算法·顺序表·单链表
John_ToDebug1 小时前
从源码视角全面解析 Chrome UI 布局系统及 Views 框架的定制化实现方法与实践经验
c++·chrome·架构
一只乔哇噻1 小时前
java后端工程师进修ing(研一版 || day41)
java·开发语言·学习·算法