1,变量是一个具有名称的对象(对象:计算机中一段具有类型的内存空间)

2,有些对象可能没有名称。
如vector<double> homework中的每一个元素homework[i]都是一个(未命名)的对象,该对象的类型跟存储在容器中的类型相同。

如string(maxlen + 1 - student[i].name.size(),’ '),该表达式构造了一个类型为string的无名对象。该对象包含maxlen+1-stundent[i].name.size()个字符,所有字符都是空白。

3,局部变量有限的生存期是区分变量和对象的一个重要依据。

4,隐含在对象类型的中的还有它的接口(对于某种对象来说,接口就是操作的集合)
eg,定义了名为name的string的变量(具有对象),
这就表明,能对变量作出库允许对string所做的所有操作

5,缓冲区(buffer))
定义:输入/输出库会将它的输出保存的内部数据结构。

作用:优化输出操作,减少输出请求的写操作的系统开销,将几个输出操作并到一个单独的写操作中。

刷新缓冲区的情况:
a,缓冲区已满
b,请求库从标准输入流中读取数据。
c,明确要求刷新。

6,当编写会花大量时间来运行的程序是,应该养成适当的时刻刷新缓冲区的好习惯,否则,有些程序的输出可能会长时间滞留在缓冲区中。

7,如果说一个变量是常量,就必须在定义它的时候对其进行初始化,否则,以后就再也不会这个机会了。
将变量定义为常量可以确保该变量的值在它的生存期内不被改变。

8,
字符串字面量:双引号括起来。(本质是常量char数组)
字符字面量:单引号括起来,是内建类型char。不能赋值给string类型的变量。
("+"不能连接两个字符串字面量,但可以连接两个字符串,因为没有定义其对应的运算符)

std::string s, t;
s + t;//这个表达式的结果为std::string类型的值
//s或者t中的任何一个都可以是(但不能全是)字符串字面量或char类型的值

用wchar_t:用于保存“宽字符“。宽字符是一种足够大的数据类型,它可以为诸如日语这样的语言保存字符。

9,string类型的数据操作
std::string z(n,c);
定义类型为std::string的变量,且将z初始化为包含n个字符c的字符串。
c必须是一个字符,不能是字符串或者字符串字面量。
std::string s;
s.size();
s中的字符个数

10,变量定义的三种形式:
用明确的初始化值定义变量:
std::string hello = “Hello”;

根据类型和给定的表达式构造一个变量
std::string starts(100, ‘*’);

定义一个变量,定义时不明确指定它的初始化值(这个变量的初始化值取决于它的类型)
std::string name;