下面编辑一个使用IO库的程序
#includeint main() { std::cout << "Enter two numbers :" << std::endl; int v1 = 0, v2 = 0; std::cin >> v1 >> v2; std::cout << "The sum of " << v1 << " and " << v2 << " is " << v1 + v2 << std::endl; return 0; }
我们这里程序使用了std::cout以及std::cin、std::endl等,std前缀定义在名为std的命名空间中的,命名空间可以帮助我们不经意的名字定义冲突,标准库定义的所有名字都在命名空间std中。要是想使用来自命名空间中的名字就要加前缀std以及作用域运算符(::)若果想简化程序编写,可以在程序开头用using声明。
using namespace::name using namespace::cout; using namespace::cin; using namespace::string;
这样就不用在程序编写过程中写前缀std;也可用最简洁的办法
using namespace std;
这样就可以不用给每个标准库中的名字进行声明了;
类型别名类型别名是一个名字,它是某种类型的同义词,实用类型别名可以让复杂的类型名字变得更简单明了,易于理解和使用,还有助于程序员清楚的指导使用该类型的真实目的。
传统方法是使用关键字typedef:
typedef double db; 这里db就等价double了
typedef db sd,*p; 这里根据等价规则,sd等价db等价double,而*p等价于double*类型。
#includeusing namespace std; int main() { typedef double db; typedef double sd; db a; sd b; cin >> a >> b; cout << a << " " << b << endl; return 0; }
新标准中规定了一种新方法,使用别名声明来定义类型的别名,
using SI=Sale_item;
这种方法用关键字using作为别名声明的开始,其后紧跟别名和等号,其作用是把等号左侧的名字规定成等号右侧类型的别名。
using SI = Sale_item;auto类型说明符
编程时常常需要把表达式的值赋给变量,这就要求在声明变量的时候清楚的知道表达式类型。然而做到这一点并非那么容易,有时甚至根本做不到。为了解决这个问题c++11引入了人auto类型说明符。
auto 让编译通过初始值来推算变量的类型。
auto item=val1+val2; item初始化为val1与val2相加的结果,此时编译器根据其相加的结果推断item的类型。
#include#include using namespace std; int main() { vector v; for (int i = 0; i < 10; i++) { v.push_back(i); } for (vector ::iterator it = v.begin(); it != v.end(); it++) { cout << *it << " "; } cout << endl; for (auto it = v.begin(); it != v.end(); it++) { cout << *it << " "; } cout << endl; system("pause"); return 0; }
这里就将auto等号右侧的表达式类型赋给等号左侧
decltype类型指示符有时会遇到这种情况:希望从表达式的类型推断出要定义的变量的类型,但不想用该表达式的值初始化变量。c++11新标准引入了第二种类型说明符decltype.
decltype(f()) sum =x; sum类型就是函数f的返回类型。
decltype与auto的一个重要区别就是decltype的类型与表达式形式密切相关。
举个简单的例子
#include#include using namespace std; int main() { vector v; for (int i = 0; i < 10; i++) { v.push_back(i); } for (vector ::iterator it = v.begin(); it != v.end(); it++) { cout << *it << " "; } cout << endl; for (decltype(v.begin()) it = v.begin(); it != v.end(); it++) { cout << *it << " "; } cout << endl; system("pause"); return 0; }
第二个遍历就是用decltype定义it为迭代器类型,其中表达式为v.begin();
当decltype((item)) sum=x; 这里是双括号,即将变量定义为引用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)