C++ Primer Plus的若干收获--(一)

   最近忙里偷闲,阅读以下生日时买的C++ Primer,以前看的第三版,还是在手机上看的,有些不太清楚。正好趁着最近有时间,把这个第六版好好的看一下,借此重温下对于C++的学习。

以下仅对于自己不太熟悉的地方以及未了解的地方加以详解。


1.1头文件的命名约定

头文件类型约定示例说明
C++旧式风格以.h结尾iostream.hC++程序可以使用
C旧式风格以.h结尾math.hC,C++程序可以使用
C++新式风格没有扩展名iostreamC++程序使用,使用using namespace std
转换后的C加上前缀C,没有扩展名cmathC++程序可以使用,可以使用不是C的特性,如namespace std


1.2 使用cout进行C++输出

<span style="font-size:14px;">cout<<string;</span>
对于现实的字符串而言,只需知道这些即可。现在来看看C++如何从概念上解释这个过程。从概念上来看,输出是一个流,即从程序流出的一系列字符。cout对象表示这种流,其属性iostream文件中定义的。cout对象包含一个插入运算符<<,它可以将其右侧的信息插入到流中。

如果熟悉C的,则可能注意到了,插入运算符<<看上去就是按位左移运算符<<,这是一个运算符重载的例子,通过重载,同一个运算符将具有不懂的含义。


1.3 为什么变量必须声明

有些语言在使用新名称是创建新的变量,而不用显示的进行声明。这看上去对用户是十分有好的,事实上从算起上说确实如此。问题是,如果错误的书写变量名,将在不知情的情况下创建了显得变量。如在BASIC语言中,

<span style="font-size:14px;">CastleDark=34
...
CastleDank=CastleDark+MOreGhosts
...
PRINT CastleDark</span>
由于拼写错误而带来的不必要的麻烦,且不容易检查出错误。


1.4 cout的新花样

<span style="font-size:14px;">cout<<carrots;</span>

程序没有打印“carrots”,而是打印存储在carrots中的值,即25.实际上是将这两个操作合二为一了。如上所示,cout可以用于,这似乎没有什么不同寻常的地方,但是别忘了,整数25与字符串"25"的天壤之别。该字符存储的是书写该字符使用的字符整数25被存储为数值,计算机不是单独存储没一个数字,而是将25存储为二进制数。这里的要点是,在打印之前,cout必须将整数形式的数字转化为字符串形式。另外,cout很聪明,知道carrots是一个需要转换的整数。

cout的智能行为源自C++的面向对象的特性。实际上,C++插入运算符<<,将根据其后的数据类型相应的调整它的行为,这是一个操作符重载的例子。


1.5 在多函数程序中使用using编译指令

让程序能够访问名字空间的方式有多种,下面就是其中的四中。

1)将using namespace std; 放在函数定义之前。让文件中所有的函数能够使用名字空间std中的元素。

2)将using namespace std; 放在特定的函数定义中,让该函数能够使用std名字空间中的所有元素。

3)在特定的函数中使用类似using std::cout; 这样的指令,而不是使用using namespace std; ,让该函数能够使用制定的元素,如cout。

4)完全不使用using指令,而在需要使用名字空间std中的元素时,使用前缀std:: ,如下所示

<span style="font-size:14px;">std::cout<<"I'm using cout and endl from the std namespace"<<std::endl;</span>


1.6 运算符sizeof 与头文件limits

sizeof 运算符指出,在使用8位字节的系统中,int的长度为四个字节。可以对类型名或变量名使用sizeof 运算符。对类型名使用此运算符时,应将名称放在括号中,但对变量名使用时,括号是可选的:

<span style="font-size:14px;">cout<<"int is"<<sizeof(int)<<"bytes.\n";
cout<<"short is"<<sizeof short<<"bytes\n";</span>

另外,在头文件climits中定义了符号常量来表示对类型的限制。下表对该文件中定义的符号进行了总结

CHAR_BITchar的位数
CHAR_MAXchar的最大值
CHAR_MINchar的最小值
SCHAR_MAXsigned char的最大值
SCHAR_MINsigned char的最小值
UCHAR_MAXunsigned char的最大值
SHRT_MAX short的最大值
SHRT_MINshort的最小值
USHRT_MAXunsigned short的最大值
INT_MAXint的最大值
INT_MINint的最小值
UINT_MAXunsigned int 的最大值
LONG_MAXlong的最大值
ULONG_MAXunsigned long的最大值
LLONG_MAXlong long的最大值
LLONG_MINlong long 的最小值
ULLONG_MINunsigned long的最小值


  


1.7{ }的初始化方式

{ }的初始化方式用于数组和结构体,但在98c++中,也可用于单值变量

<span style="font-size:14px;">int hambergers={24};//set hambergers to 24</span>

将大括号初始化器用于单值变量的情形还不多,但在C++11标准是得这种情形更多了。首先采用这种方式时,可以使用=也可以不使用:

<span style="font-size:14px;">int emue{7};
int reas={12};</span>

其次大括号中可以不包含任何东西。在这种情况下,变量将被初始化为0。

第三,在以前,C++用不同的方式来初始化不同的类型:初始化类变量的方式不同于初始化常规变量的方式,而初始化常规结构的方式又不同于初始化简单变量的方式;通过C++新增的大括号初始化器,初始化常规变量的方式与初始化类变量的方式更像,C++11是得可将大括号初始化器用于任何类型,这是一种通用的初始化语法。

1.8 使用转义字符的一段小代码

<span style="font-size:14px;">#include<iostream>
int main()
{
  using namespace std;
  cout<<"\aOperation\"HyperHype"is now activated!\n";
  cout<<"Enter your agent code:______\b\b\b\b\b\b";
  long code;
  cin>>code;
  cout<<"\aYou erntered "<<code<<"...\n";
  cout<<"\aCode verified!Proceed with Plan Z3!\n";
  return 0;
}</span>

1.9 为什么main()不能使用其他名称

之所以将程序中的函数命名为main(),原因是必须这样做。通常,C++程序必须包含一个名为main()的函数(且大小写均要正确)。在运行C++程序时,通常从main()函数开始执行。因此没有此函数程序将不完整,编译器将支出未定义该函数。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值