C++初学者指南第一步---8.类型系统(基础)
文章目录
- C++初学者指南第一步---8.类型系统(基础)
-
- 1.用const声明常量
- 2.类型别名
- [3.类型推导 auto](#3.类型推导 auto)
- 4.常量表达式:constexpr (C++11)
1.用const声明常量
语法:
Type const variable_name = value;
类型 const 变量名 = 值
- 值一经分配就无法更改
- 初始值可以是动态的(= 在运行时设置)
java
int i = 0;
cin >> i;
int const k = i; // "整形常量"
k = 5; // 编译错误: k是const!
注意:如果你不需要在初始赋值后改变变量的值,总是将变量声明为const !
- 避免错误:如果稍后不小心更改值,则不会编译。
- 有助于更好地理解代码:清楚地传达值在代码中将保持不变。
- 可以提高性能(可能进行更多编译器优化)
2.类型别名
语法:
using NewType = OldType; //C++11
typedef OldType NewType; //C++98
java
using real = double;
using ullim = std::numeric_limits<unsigned long>;
using index_vector = std::vector<std::uint_least64_t>;
注意:比起过时且模棱两可的类型定义,我们更喜欢更强大的using(稍后我们将看到原因)!
3.类型推导 auto
语法:
auto variable = expression;
-
从赋值符右侧推导出的变量类型。
-
通常更方便、更安全、更面向未来。
-
对于泛型(与类型无关)编程也很重要。
auto i = 2; // int
auto u = 56u; // unsigned int
auto d = 2.023; // double
auto f = 4.01f; // float
auto l = -78787879797878l; // long int
auto x = 0 * i; // x : int
auto y = i + d; // y : double
auto z = f * d; // z : double
4.常量表达式:constexpr (C++11)
-
在编译时必须能够进行计算
-
如果不在常量表达式上下文中调用,可以在运行时计算
-
在常量表达式上下文中,所有的表达式本身必须是常量表达式。
-
constexpr 函数可能包含:
只有一个返回语句 (C++11)
多个语句 (C++14)// 两个简单函数:
constexpr int cxf (int i) { return i2; }
int foo (int i) { return i2; }
constexpr int i = 2; // OK '2' 是字面量
constexpr int j = cxf(5); // OK, cxf是常量表达式
constexpr int k = cxf(i); // OK, cxf 和 i 是常量表达式
int x = 0; // 不是常量表达式
int l = cxf(x); // OK, 不是一个常量表达式上下文
// 常量表达式上下文:
constexpr int m = cxf( x ); //
constexpr int n = foo( 5 ); //
如果文章对您有用,请随手点个赞!^_^