《C++ Primer 第三版》读书笔记——第五章 语句


1、对于类对象的定义来说,由于类对象与构造函数和析构函数相关联,所以声明的局部性就变成必需的了。之所以C++不鼓励将所有对象的定义都放在块顶部,鼓励局部声明,是因为:

  • 使程序更容易阅读。
  • 性能方面的影响。
    1. 在做块中任何事情之前,所有类对象的构造函数都会被调用。声明的局部性使初始化的开销被分摊。
    2. 如果将对象的定义全部放在块顶部,在没有用到这些对象之前,块就中途正常结束,那么将产生不必要的构造函数-析构函数对的开销。

2、在C++中,空悬else二义性由一下规定来解决:else子句与“最后出现的未被匹配的if子句”相匹配。

3、关键字case后必须是一种整数类型的常量表达式,且任意两个case标签不能有同样的值。

4、isalpha()是标准C库的一个例程:如果它的参数是一个英文字母,则返回true。需要头文件

#include <ctype.h>

5、把一条声明语句放在与case或default相关联的语句中是非法的,除非它被放在一个语句块中,如

case ok;
{
      //do something
}

6、在for的格式

for ( init-statement; condition; expression )
      statement

中,init-statement可以定义多个对象,但只能出现一个声明语句,因此,对象都是同一个类型的。

7、在标准C++之前,在init-statement中定义的对象的可视性可以扩展到for循环包含的语句块之外,但在标准C++中这个对象的可视性仅在for循环之内。

8、在

do
      statement
while ( condition );

的condition中不支持对象定义。

9、break只能出现在循环和switch-case语句中,continue只能出现在循环语句中。

10、goto语句只能跳转到同一函数内部某个位置。标号(label,goto的目标)不能紧接在右花括号的前面。不能向前跳过没有被语句块包围的声明语句,如

int opps_in_error()
{
      //  mumble ...
      goto end;
      //  错误:跳过声明语句
      int ix = 10;
      //  ...code using ix
end: ;
}

正确的应该是

int opps_in_error()
{
      //  mumble ...
      goto end;
      {
            //  OK:在语句块中声明语句
            int ix = 10;
            //  ...code using ix
      }
end: ;
}

这是编译器为类对象插入构造函数-析构函数调用的需要。

11、abort(),终止程序,头文件:

#include <cstdlib>

说明(MSDN):

The abort function, also declared in the standard include file STDLIB.H, terminates a C++ program. The difference between exit and abort is that exit allows the C++ run-time termination processing to take place (global object destructors will be called), whereas abort terminates the program immediately.

12、“不给用户提供一个功能”比“提供一个不正确的功能导致用户程序死掉”要好得多。

13、关键字typename与class可以互换,typename是标准C++中新引入的。

14、模板构成的标准C++程序设计的基本组件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值