C++保留了63个词。这些词被称作关键词,在C++中其中每一个关键词都有自己特殊的意义。15个以*开头的关键词都是在最初的版本后加上去的,因此,早期的参考书或资料也许没有这些关键词。
下面是一些列所有的C++关键词:
asm auto bool * break case catch char class |
const const_cast * continue default delete do double dynamic_cast * |
else enum explicit * export * extern false * float for |
friend goto if inline int long mutable * namespace * |
new operator private protected public register reinterpret_cast * return |
short signed sizeof static static_cast * struct switch template |
this throw true * try typedef typeid * typename * union |
unsigned using * virtual void volatile wchar_t * while |
你已经使用过了上面的一些关键词,包括int, void, return, using, namespace。包括一些列操作符,这些关键词定义了整个C++语言(没有包括预处理器指令)。由于这些关键词有特殊的含义,你的IDE会用不同的颜色对它们进行标记。
当你学完这个教程的时候,你将会明白所有的这里列出来的关键词。
标识符和命名
为一个变量,函数,类,或是C++中其它的内容的名字叫做标识符。C++给了你很大的自由度让你能够以自己想要的方式对标识符进行命名。但是,当命名的时候必须遵守一些基本的规则:
nvalue
、nValue
、NVALUE
都是不同的名字. 不是很难记吧?
现在你已经能够命名一个变量了,那么就让我们来讨论该如何以更合理的方式命名一个能够准确表达含义的变量吧。
1. 变量或是函数以小写字母开头进行命名是很方便的。如果一个变量或是函数名是一个单词,整个单次应该都用小写字母表示。
1: int value; // correct
2:
3: int Value; // incorrect (should start with lower case letter)
4: int VALUE; // incorrect (should start with lower case letter)
5: int VaLuE; // incorrect (see your psychiatrist) ;)
如果标识符是由多个单次组成的名字,有两种常见的方式进行命名:通过下划线或是通过驼峰式大小写:
1: int my_variable_name; // correct (separated by underscores)
2: int myVariableName; // correct (intercapped)
3:
4: int my variable name; // incorrect (spaces not allowed)
5: int MyVariableName; // incorrect (should start with lower case letter)
在这个教程中,我们将使用驼峰式大小写,因为这样更容易读。当区块的代码量较多的时候,容易将下划线与空格搞混。
2. 也许这是最重要的规则,给你的标识符一个实际的描述,描述出它是什么。通常没有经验的程序员会将变量名尽量命名地很短,或者解释它们节省打字量,或是说因为这些意义能够被很容易的指出。这样的想法几乎总是错误的。原则上,命名的变量能够使得对你的代码陌生的人能够很快的指出变量所表述的意思。3个月后,当你再次看你的程序的时候,你将会发现已经忘记它是如何实现的,你也会庆幸你选择了清晰的有意义的变量名字。越是在复杂的代码中使用的变量,越应该具备一个好的容易理解的名字。
int ccount | Bad | Nobody knows what a ccount is |
int customerCount | Good | Clear what we’re counting |
int i | Bad | What does I stand for?* |
int index | Good | This variable is indexing something |
int _count | Bad | Do not start variable names with underscore |
int count | Either | Okay only if obvious what we’re counting |
int data | Bad | What kind of data? |
int value1, value2 | Either | Can be hard to differentiate between the two |
int numberOfApples | Good | Descriptive |
int totalScore | Good | Descriptive |
int monstersKilled | Good | Descriptive |
int x, y | Either | Okay only in trivial mathematical functions |
注意:对于不是很重要的变量,如循环变量,使用一个简单的命名是没问题的。我们将会在其它主题中讨论。
3. 一个清晰的注释大有帮助。比如,我们声明一个变量名字为numberOfChars,可能是用来存储一段文字中字符数量。这段文字“Hello World!"有10,11,还是12个字符呢?这取决于我们是否包含空白符或是标点符号。相比于将变量命名成numberOfCharsIncludingWhitespaceAndPunctuation,这么个相当长的变量,还不如在变量声明的地方加一个注释。
1: // holds number of chars in a piece of text -- including whitespace and punctuation!
2: int numberOfChars;
匈牙利命名法
有一种命名变量的方法叫做匈牙利命名法,这个命名法中,变量总是以一个暗示变量类型的前缀开始。
1: int nValue; // the n before Value represents that this is an integer
2: bool bValue; // b means boolean
3: char chValue; // ch means char
4: double dValue; // d means double
5: float fValue; // f means float
我们将会在不同变量之间转换的时候讨论更多的关于匈牙利命名法的内容。