2.5.2 auto 类型说明符
可以从表达式推断出要定义变量的类型,
- 编译器是将引用的对象的类型作为auto的类型。
- 去除顶层const特性。
2.5.6 decltype 类型指示符
不是根据表达式的初始化变量确定类型。而是返回操作数的数据类型。
decltype((variable)) 双层括号的结果永远都是引用,dectype(variable)而单层括号是 只有variable本身是引用时,才返回引用。
#include<iostream>
int main()
{
int a = 3, b = 4;
int i = 42, *p = &i, &r = i;
decltype(a) c = a;
decltype((b)) d = a;
decltype(a = b) f = a;
decltype((i)) e = i;
decltype(r+1) g = 45;
decltype(*p) z = a;
std::cout<<"c="<<c<<std::endl;
std::cout<<"d="<<d<<std::endl;
std::cout<<"f="<<f<<std::endl;
std::cout<<"e="<<e<<std::endl;
std::cout<<"g="<<g<<std::endl;
std::cout<<"z="<<z<<std::endl;
++c;
++d;
std::cout<<"c="<<c<<std::endl;
std::cout<<"d="<<d<<std::endl;
return 0;
}
output:
c=3
d=3
f=3
e=42
g=45
z=3
c=4
d=4
2.6.1 定义Sales_data类型
struct Sales_data {
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
Sales_data accum,trans,*salesptr;
定义一个Book 结构体
#include<iostream>
struct Book
{
std::string bookName;
int bookNumber;
};
int main()
{
Book book;
book.bookNumber = 1;
std::cout<<"Input your BookName and Book Number"<<std::endl;
std::cin>>book.bookName>>book.bookNumber;
std::cout<<"Book Name: "<<book.bookName<<" Book Number: "<<book.bookNumber<<std::endl;
return 0;
}
2.6.3 编写自己的头文件
- 预处理器
确保头文件被包含多次,仍然能够正常工作。
很清晰,很喜欢,感觉这本书很不错。
网友评论