int属于内置类型:语言自定义的类型
iostream库中包含两个基础类型:istream ostream,分别表示输入流和输出流,一个流就是一个字符序列
cin(see in):标准输入
cout(see out)标准输出
cerr(see err)标准错误输出
clog(see log)输出程序运行的一般性信息
“字符串” 字符串字面常量
<<std::endl : 操作符,效果:结束当前行,并将设备关联的缓冲区中的内容刷到设备中。缓冲刷新操作可以保证到目前为止程序所产生的所有输出都真正写入输出流中,而不是仅停留在内存中等待写入流。
命名空间可以帮助我们避免不经意的名字定义冲突,以及使用库中相同名字导致的冲突。标准库定义的所有名字都在命名空间std中。
C++的类设计之初能定义使用上像内置类型一样自然的类类型。
每个类实际上都定义了一个新的类型,其类型名就是类名。
使用头文件来访问为自己的应用程序所定义的类。
来自标准库的头文件,#include<iostream> 使用尖括号包围头文件名。对应不属于标准库的头文件,则用""包围。
类对象的名义调用成员函数:item1.isbn() 点运算符只能用于类类型的对象,左侧运算对象必须是一个类类型的对象,右侧运算对象必须是该类型的一个成员名,运算结果为右侧运算对象指定的成员。
使用点运算符访问一个成员函数,使用调用运算符()来调用一个函数,调用运算符是一对圆括号,里面放着实参列表。
编程语言两种方式:1 赋予程序员自定义数据类型的权利,实现对语言的扩展
2 将一些有用的功能封装成库函数提供给程序员
当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。如:8byte大小的unsigned char可以表示0到255区间的值,如果我们赋予一个区间以外的值,则实际的结果是该值对256取模后所得的余数。把-1赋给8byte大小的unsigned char 所得的结果是255.
无符号数字类型需要看看
‘A’ 字符字面值
“A” 字符串字面值
字符串字面值的类型实际上是由常量字符组成的数组(array),编译器会在每个字符串的结尾处添加一个空字符‘\0’,字符串字面值实际长度比内容多1.
‘\t’横向制表符 '\n':换行符 ‘\r’回车符
string 是一种表示可变长字符序列的数据类型
对象是指一块能存储数据并具有某种类型的内存空间。
初始化与赋值不同:初始化不是赋值,是创建变量的时候赋予其一个初始值,而赋值的含义是把对象的当前值擦除,以一个新值替代。
列表初始化,使用一组由花括号括起来的初始值。
变量的声明和定义
C++语言支持分离式编译(Separate compilation)机制,将声明和定义区分开:
声明:使得名字为程序所知,一个文件如果想使用别处定义的名字则必须包含对那个名字的声明。变量声明规定了变量的类型和名字。
定义:负责创建与名字关联的实体。定义申请存储空间,或者为变量赋初始值。
extern int i;//声明i,而非定义i
int j; 声明并定义j
//任何包含显示初始化的声明即成为定义
//若给extern关键字标记的变量赋一个初始值,抵消了external的作用。extern语句如果包含初始值就不再是声明,而是定义
//在函数体内部,试图初始化一个由extern关键字标记的变量,即引发错误。
变量只能被定义一次,但是可以被多次声明。
变量命名规范:
1、变量名一般小写
2、用户自定义的类名一般大写字母开头
3、如果标识符由多个单词组成,单词之间应有明显的区分student_load
声明语句:数据类型(基本数据类型) 变量名列表(声明符列表)
每个声明符命名了一个变量并指定该变量为与基本数据类型有关的某种类型
引用:
引用为对象起了另外一个名字,引用类型引用另外一种类型,通过将声明符写成&d(d为声明变量名)的形式来定义引用类型
//初始化变量时,初始值会被拷贝到新建的对象中。当定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用。一旦初始化完成,引用将和它的初始值一直绑定在一起,无法重新绑定到另外一个对象,引用必须初始化。
int ival=1024;
int &refVal=ival;
printf("%d",refVal);
引用的类型要和与之绑定的对象严格匹配。引用只能绑定在对象上,不能与字面值或某个表达式的计算结果绑定在一起。