【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的使用 | 爱编程的大丙

相关推荐
luj_176810 分钟前
星火科技助力边远地区防病攻坚
c语言·开发语言·c++·经验分享·算法
always_TT17 分钟前
【Python 日志记录:logging 模块入门】
开发语言·python·php
xcLeigh33 分钟前
Go入门:变量声明的五种方式详解
java·开发语言·golang
zmzb01031 小时前
C++课后习题训练记录Day175
开发语言·c++
啦啦啦啦啦zzzz2 小时前
工具:动态类工厂和用配置文件存储属性
c++·设计模式·工具·动态工厂
脱胎换骨-军哥2 小时前
C++ 代码规范与格式化指南
开发语言·c++·代码规范
枕星而眠2 小时前
C++ STL Map容器完全指南:从有序红黑树到无序哈希表
java·开发语言
geats人山人海3 小时前
数据结构第六章c语言 树的存储下二叉树的概念和存储
c语言·数据结构·算法
爱吃牛肉的大老虎3 小时前
Rust对象之结构体,枚举,特性
开发语言·后端·rust
bbq粉刷匠3 小时前
HashMap 底层原理深度拆解(二):putVal 完整链路解析(懒加载 · 链表遍历 · 尾插法)
java·开发语言·哈希算法