1、对于类对象的定义来说,由于类对象与构造函数和析构函数相关联,所以声明的局部性就变成必需的了。之所以C++不鼓励将所有对象的定义都放在块顶部,鼓励局部声明,是因为:
- 使程序更容易阅读。
- 性能方面的影响。
- 在做块中任何事情之前,所有类对象的构造函数都会被调用。声明的局部性使初始化的开销被分摊。
- 如果将对象的定义全部放在块顶部,在没有用到这些对象之前,块就中途正常结束,那么将产生不必要的构造函数-析构函数对的开销。
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++程序设计的基本组件