1、标示符必须以字母或下划线开头,不能以数字开头。

2、int a=7和int a=07 不同,前者是十进制,后者是8进制。

3、double a=b=99.99;//非法,同一定义语句中不同变量的初始化应该分别进行。

4、内置数据类型的变量在函数体外定义初始化为0,在函数体内定义不初始化。

5、只有当extern 声明位于函数外部时,才可以含有初始化式。

extern std::string name("abc");一定是在函数体外,作全局变量。

6、const常量必须初始化。

7、非const变量:

//file1.c
int count;
//file2.c
extern int count;
++count;

8、const变量:在全局作用域声明的const的变量是定义该对象的文件的局部变量。此变量只存在于那个文件中,不能被其他文件访问。

通过指定const 变量为extern ,就可以在整个程序中访问const 对象:

//file1.c
extern const int bufSize=123;
//file2.c
extern const int bufSize;
for(int i=0;i<bufSize;i++)……

9、引用必须与该引用同类型的对象初始化,但是唯独const引用可以初始化右值。

int &refva1;//error:a reference must be initialized
int &refva2=10;//error:initializer must be an object
const int &refva3=123;//right
const int ival=1;
const int &refva4=ival;

const 引用是对const 的引用。

10、定义类时,通常先定义该类的接口,即该类所提供的操作。通过这些操作,可以决定该类完成其功能所需要的数据,以及是否需要定义一些函数来支持该类的实现。

11、编程新手经常会忘记类定义后面的分号,这是个很普遍的错误。

12、用class 和struct 关键字定义类的唯一差别在于默认访问级别:默认情况下,struct的成员为public,而class 的成员为private.

13、头文件中不能包含变量和函数的定义,但是const 对象和inline函数可以定义。

extern int ival=10;//定义
double fica;//定义,因为没有extern

如果const变量不是用常量表达式初始化,那么他就不应该在头文件中定义。相反,和其他的变量一样,该const变量应该在一个源文件中定义并初始化。应在头文件中为它添加extern声明,以使其能被多个文件共享。

14、头文件保护符:防止头文件被多次重复包含

#ifndef SHA
#define SHA

头文件的实体内容

#endif

15、在头文件必须总是使用完全限定的标准库名字,即不能使用using namespace std

16、从标准库输入读取string :读取并忽略开头所有的空白字符,读取字符直至再次遇到空白字符,读取终止。

如果输入为“   Hello  World  ”,则存入的字符串为“Hello”

17、getline函数:getline(cin,str)从输入流读入数据到str,但不包括换行符,可以包括空白字符,这与cin>>str不同。getline会丢弃最后的换行符,因此cout<<str时需要自己添加endl;

18、

#include <iostream>
#include <string>
using namespace std;

int main()
{
	string word;
	while(cin>>word)
	cout<<word;
	system("pause");
	return 0;
}

wKioL1UALrSCTWLuAAC9tTW9xxM860.jpg

string对象在内存里的数据为"1\0" "2\0" "3\0"

string.size()不将'\0'字符计算在内。

19、string.size()的返回值是string::size_type类型,任何存储string的size操作结果的变量必须为string::size_type类型。特别重要的是,不要把size的返回值赋给一个int变量。

20、+连接操作符左右必须有一个string类型,不能全部是字面值。    

21、cctype头文件里的函数可以判断一个字符是字母、数字、空白字符、标点符号等

22、