is_reference 模板在 C++ 中
在本文中,我们将讨论 C++ STL 中 std::is_reference 模板的用法、语法和示例。
is_reference 是一个模板,位于 <type_traits> 头文件中。此模板用于检查给定的类型 T 是否为引用类型。
此模板组合了 is_rvalue 和 is_lvalue,并检查如果其中一个为 true,则 is_reference 的结果也将为 true。
什么是 C++ 中的引用?
引用是现有变量的别名或另一个名称。引用与指针不同,因为 -
- 我们无法将引用设置为 null,但指针可以是 null 指针。
- 一旦引用被初始化为某个对象,就无法更改。指针可以随时指向任何其他对象。
- 必须在创建时初始化引用,而指针可以在创建后稍后再初始化。
可以使用我们想要引用的变量前加一个和号 (&) 符号来声明引用。
语法
template <class T> is_reference;
参数
该模板仅可以具有类型 T 的参数,并检查给定的类型是否为引用类型。
返回值
它返回一个布尔值,如果给定的类型为引用类型,则返回 true,如果给定的类型不是引用类型,则返回 false。
示例
Input: is_reference<int>::value; Output: False Input: is_reference<int&>::value; Output: True
示例
#include <iostream>
#include <type_traits>
using namespace std;
class TP {
};
int main() {
cout << boolalpha;
cout << "Checking for is_reference: ";
cout << "\n class TP : "<<is_reference<TP>::value;
cout << "\n class TP&: "<<is_polymorphic<TP&>::value;
cout << "\n class TP&&: "<<is_polymorphic<TP&&>::value;
return 0;
}输出
如果我们运行以上代码,它将生成以下输出 -
Checking for is_reference: class TP : false class TP&: false class TP&&: false
示例
#include <iostream>
#include <type_traits>
using namespace std;
int main() {
cout << boolalpha;
cout << "Checking for is_reference: ";
cout << "\n int: "<<is_reference<int>::value;
cout << "\n int&: "<< is_reference <int&>::value;
cout << "\n int&&: "<< is_reference <int&&>::value;
// char
cout << "\n char: "<<is_reference<char>::value;
cout << "\n char&: "<< is_reference <char&>::value;
cout << "\n char&&: "<< is_reference <char&&>::value;
//float
cout << "\n float: "<<is_reference<float>::value;
cout << "\n float&: "<< is_reference <float&>::value;
cout << "\n float&&: "<< is_reference <float&&>::value;
//double
cout << "\n double: "<<is_reference<double>::value;
cout << "\n double&: "<< is_reference <double&>::value;
cout << "\n double&&: "<< is_reference <double&&>::value;
return 0;
}输出
如果我们运行以上代码,它将生成以下输出 -
Checking for is_reference: int: false int&: true int&&: true char: false char&: true char&&: true float: false float&: true float&&: true double: false double&: true double&&: true
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP