0.前言
最近一段时间没有敲C++,很多东西记忆已经变得模糊,近来看了一下《C++ Primer Plus》这本书,确实是一本神书,很疑惑当时学C++时为什么没有看呢?建议学C++的同学们去看。在这里免费分享给大家PDF。提取码:hh66。
1.文件扩展名
曾经以为C++文件的扩展名都是cpp,是我太片面了。这本书里清楚的介绍了C++在不同的OS中有多种扩展名。就以win为例,可以是cpp,也可以是cc,或者cxx。
这三种方式都可以,都表示是c++文件。应该说成是不同的编译环境下,能识别的扩展名,不唯一。
2.cout,cin
原来我知道这是输出输入,需要用头文件<iostream>,使用一个命名空间using namespace std;来限定。现在我才知道,原来cout,cin这其实是对象。这个头文件iostream其实就是输入输出流,cout就是ostream这个类建立的对象,同样,cin是istream这个类的对象。所以会有cout.put()这个函数的出现。虽然好像没用过这个东西,这其实算是历史遗留问题,与C++的历史有关。这些在这本书里第三章写得很清楚。
3.你知道‘\a’是什么吗?
先说一下,很鸡肋,但是,别人不知道,你知道了,那就比别人高那一点点。这和“虽然没什么用,但是不能没有”是一个道理。
这个是干什么的,振铃,说出来你可敢信。意思就是你在输出的字符串或者使用到转义序列时,在运行出现终端时会启用系统提示音。比如
cout<<"hello world!\a\n";
这个时候会有声音,提示一下,我真是直呼内行。但是不同的OS可能效果不一样,有的会保持是沉默。我用的是VS编译的,是WIN的提示音。
对了,还有‘\b’。我不说作用。你去测试代码就明白了。很神奇。
cout << "请输入密码:______\b\b\b\b\b\b";
int n;
cin >> n;
cout << n << "\a\n";
4.大括号{}
C++的大括号作用很多,如果只知道简单的作用域限制,那太不了解了。似乎是从一开始的C++标准就定义了大括号的作用,限定作用域、赋值等。
int a{ 666 };
int b = { 666 };
char ch1{ 'h' };
char ch2 = {'j'};
wchar_t ch3{ 'N' };
wchar_t ch4 = {'k'};
你看这个加上=与不加是一样的,这个用小括号也是一样的。是为了说明{}的作用不局限。这个大括号里可以没有东西,默认是0。为什要单独说这个大括号,因为有助于更好地防范类型转换错误。C++11标准使得可将大括号初始化器用于任何类型。
先说这么多。