C++函数、类模板与类型转换

引言-------之前我一直有个错误的概念,举个例子

type(int)&&   一直以为是万能引用 实际上是错误的,该类型为右值引用

const type(int) &  这个才是万能引用(左值,左值引用,常左值,常左值引用,右值,右值引用,常右值引用)

但是:

template

void func(T&&  a){}

在这里,T&&称为不确定类型,即可以接受所有类型

思考:为什么右值引用在传递的过程中会退化为左值?

#include
using namespace std;
void fun(int& a) { cout << "fun &" << endl; }
void  fun(int&& a) { cout << "fun &&" << endl; }
void print(int&& a)
{
    fun(a);//在这里传参的时候,右值 20 已经具名化,即退化为左值
}
int main()
{
    print(20);
    return 0;
}

 C++函数、类模板与类型转换_第1张图片

 

类型转换

#include
using namespace std;
template
class my_remove_reference//去掉引用属性
{
public:
	using type = T;
	my_remove_reference() { cout << "my_remove_reference  T" << endl; }
};
template
class my_remove_refer

你可能感兴趣的:(c++,算法,开发语言)