- C++中名称区分大小写,名称中签2048个字符是有效的。我们可以使用下划线作为变量名的开头,但是不能使用两个下划线,也不能使用大写字母之后紧跟一个下划线(这些都是C++的保留格式)。
- 常量
nullptr它表示0,主要用于表示任何指针类型的无效值。 - 使用标识符
#define定义一个常量,这方面的问题是,预处理器会执行简单的替换。使用const关键字声明常量时,C++编译器将执行类型检查,以确保正确地使用该常量。 - 常量表达式
- C++11中引入了一个名为
constexpr的关键字。它用于处理表达式,并且表示该表达式应该在编译时被求值,而不是运行时被求值。
- C++11中引入了一个名为
- 枚举
-
一个枚举变量是一组已经命名的常量,这意味着我们可以使用枚举变量作为函数的一个参数,比如:
enum suits {clubs, diamonds, hearts, spades} -
默认情况下,枚举变量是整数类型,编译器将假定它是一个整数型(
int)变量,但是你可以通过在变量声明时指定该整数类型来修改其类型。使用int类型(通常是4字节),可以使用char类型替代它(1字节)。enum suits : char {clubs, diamonds, hearts, spades} -
当使用枚举值时,可以只使用它的名称,不过通常会使用枚举变量名来限定它,使得代码更易读:
suits card1 = diamonds; suits card2 = suits::diamonds; -
为了强制开发人员声明作用域,我们可以采用关键字
class:enum class suits : char {clubs, diamonds, hearts, spades} -
默认情况下,编译器将把0赋值给第一个枚举元素,然后通过自增的方式,依次为其余枚举元素赋值。还可以为他们赋值:
enum posts {ftp=21, ssh, telnet, smtp=25, hhtp = 80}; -
枚举在
switch语句中将非常有用,因为具名的值比只使用一个整数表达的含义更清晰。 -
还可以使用枚举作为函数的参数,从而通过该参数传递的值进行限制。
void stack(suits card) { //card是suits中四个元素之一 }
-
- 命名空间
- 命名空间提供了一种模块化代码机制。
- 命名空间允许使用唯一的名称标记自定义类型、函数和变了,使用作用域运算符,你可以提供一个完整的限定名称。
- 它的优点在于我们能够确切地知道将要调用哪个元素;缺点是使用完全限定名称实际上会关闭C++重载函数的参数查找机制。
- C++11提供了一个名为内联命名空间的特性,它允许定义一个嵌套的命名空间,但是允许编译器在执行相关参数查找时,将该元素视为位于其父命名空间中。
- C++变量作用域
externconststatic
- 运算符
-
C++11中引入了另外一种使用for循环的方法,旨在将之与容器搭配使用。
vector<string> beatles = {"John", "Paul", "George", "Ringo"}; for (string musician : beatles) { cout << musician << endl; }
-