黑龙江建设局网站,金隅嘉华大厦网站建设公司,广东住房和城乡建设厅官方网站,南京紫米网络科技有限公司内置类型升级 1.调用模板T时#xff0c;为什么可以使用T()类型的匿名对象来传参2.内置类型被升级成为类后的使用事项 1.调用模板T时#xff0c;为什么可以使用T()类型的匿名对象来传参
当我们在定义或声明一个函数时#xff0c;如果想使用模板T类型的默认构造#xff08;例… 内置类型升级 1.调用模板T时为什么可以使用T()类型的匿名对象来传参2.内置类型被升级成为类后的使用事项 1.调用模板T时为什么可以使用T()类型的匿名对象来传参
当我们在定义或声明一个函数时如果想使用模板T类型的默认构造例如使用string或vector的默认构造 可以选择如此传参
void Func(const T val T())第一次见这段代码会提出一个问题如果T是int或char等内置类型时int()/char()的类型是否能通过编译
答案是可以
int i 0;
int j int();(默认构造)
int k int(1):非默认构造从这里就能看出C的内置类型已经被升级成为了类类型
2.内置类型被升级成为类后的使用事项 int i;int j();int k(5);我们知道当我们要创建一个实例化对象时如果是类类型例如string那么是不能采用string a();这种风格的创建因为编译器无法判断a是对象还是函数但是我们再看int j();编译器虽然没有报错但也没有创建j这个对象事实上这是一个函数声明声明一个返回int类型且无参数的函数j对于i和k如果上下文没有歧义基本都是解释为初始化