C++ 引用型别未定义

什么是引用型别未定义呢?(首先是基本数据类型的)

        在使用函数的时候,我们在给函数传参的时候可能会传入一个左值也可能是右值。当我们使用如下函数funtion的时候,会在控制台打印什么样的结果呢?(此时我们funtion接受的模板可以接收左值和右值)

void Print(int& x){
    cout<<"int&"<
void funtion(T&& x){//引用型别未定义
    Print(x);
}
int main() {
    int a=10;
    const int b=10;
    funtion(a);
    funtion(b);
    funtion(10);
    return 0;
}

 

        结果有点意外,编辑器识别我们传入的右值识别为左值了。因为左值引用是万能引用,可以接受除他的const之外的所有类型。但如果我们需要识别为正确类型的话,我们又怎么办呢?C++为我们提供了方法:完美转发。只需要很少的代码,可以完成我们的需求。

//
// Created by 18751 on 2023/7/23.
//
#include
using namespace std;

void Print(int& x){
    cout<<"int&"<
void funtion(T&& x){
 //   Print(x);
    Print(std::forward(x));
}
int main() {
    int a=10;
    const int b=10;
    funtion(a);
    funtion(b);
    funtion(10);
    return 0;
}

 

你可能感兴趣的:(C++,c++,算法)