1、cin和cout分别istream类和ostream类的对象,用来实现基本的键盘输入和屏幕输出。
2、在C++类库提供的头文件中已经对“>>”和“<<进行了重载,使之分别作为流提取运算符和流插入运算符,在C++中,可以使用流提取运算符“>>”从标准输入设备键盘取得数据,使用流插入运算符“<<”从输出数据。
3、用户自定义的类型的数据,不能直接用“>>”和“<<”进行输入/输出,必须对“>>”和“<<"进行运算符重载(std)后才可以使用。
格式示例:
cin>>变量1>>变量2>>...变量n;cout<<表达式1<<表达式2<<...<<表达式n;
1、iostream是C++的标准输入输出流。当在程序中使用cin或cout时,必须在程序的最前面包含这个流。
2、每条#include指令仅可以包含一个头文件,如果需要包含多个头文件,则需要使用多条#include指令。
3、常用的头文件
标准输入输出流:
5、C++提供了using语句,可以简化命名空间的写法。using语句有两种形式:
using指令也可以用来指定命名空间中的特定项目。例如,如果您只打算使用std命名空间中的cout部分,可以使用usingstd::cout;方式。随后的代码中,在使用cout时就可以不用加上命名空间名称作为前缀,但是std命名空间中的其他项目仍然需要加上命名空间名称作为前缀,如下所示:
#include 为了调用带有命名空间的函数或变量,需要在前面加上命名空间的名称(如:name::code;//code可以是变量或函数) #include static_cast 注意static_cast不能转换掉expression的const、volitale、或者__unaligned属性。 constdoublepi(3.14159);或constdoublepi=3.14159;const_cast该运算符用来修改类型的const或volatile属性。除了const或volatile修饰之外,type_id和expression的类型是一样的。常量指针被转化成非常量指针,并且仍然指向原来的对象;常量引用被转换成非常量引用,并且仍然指向原来的对象;常量对象被转换成非常量对象。 const_cast dynamic_cast(动态转换),允许在运行时刻进行类型转换,从而使程序能够在一个类层次结构安全地转换类型。dynamic_cast提供了两种转换方式,把基类指针转换成派生类指针,或者把指向基类的左值转换成派生类的引用。 enum(枚举)类型,给出一系列固定的值,只能在这里面进行选择一个。 typedef(类型定义,typedefine),其格式为: typedef类型定义名;类型说明定义了一个数据类型的新名字而不是定义一种新的数据类型。定义名表示这个类型的新名字。 typename(类型名字)关键字告诉编译器把一个特殊的名字解释成一个类型。在下列情况下必须对一个name使用typename关键字: wchar_t是宽字符类型,每个wchar_t类型占2个字节,16位宽。汉字的表示就要用到wchar_t。 1、当不同类型的量进行混合算术运算时,系统自动进行合理的类型转换,也可以在程序中使用强制类型转换运算符。 系统自动转换原则:低字节向高字节转换 inta;doubleb;a+b-->结果为double类型;int类型4个字节,double8个字节,低字节向高字节转换。 2、static_cast用于将一种数据类型转换成另一种数据类型,一般情况下,static_cast可以缺省。 static_cast<类型名>表达式 #include 3、const_cast用于去除指正和引用的常量性,但不能去除变量的常量性 const_cast<类型名>(表达式) 功能是将常量指针转化成非常量的指针,并且仍然指向原来的对象; 或是将常量引用转换成非常量的引用,并且仍然指向原来的对象。 代码示例: 1、引用的定义 *引用相当于给变量起一个别名。变量对应于某个内存地址,如果给某个变量起了别名,相当于变量和引用都对应到同一个地址。 “引用”的定义格式: 类型名&引用名=同类型的某变量名; *系统并不为引用变量分配空间,引用变量与原变量对应的是同一个内存地址,也就是“你变,我就变,我变,你也变” intmain(){intoneInt=1;int&ref=oneInt;constint&refc=oneInt;ref=2;cout<<"oneInt="< 2、引用在函数中的使用 引用既可以作为函数的参数使用,也可以作为函数的返回值使用。C++中,函数调用时参数的传递有两种方式:传值和传引用 如果函数的形参不是引用,那么调用时实参传递给形参通常采用的时传值的方式,即将实参的值拷贝给形参, 函数内部对形参的改变不会影响到函数外实参的值。 如果函数的形参是引用,则调用时实参传递给形参采用的是传引用的方式。函数调用时,实参对象名传递给形参对象名,形参对象名就成为实参对象名的别名, 即形参是对应实参的引用,他们是等价,代表同一个对象,也可以看作是将实参的地址传递给了形参。 在函数内部对形参的操作,都是对这个地址的内容进行的,相当于对实参的值进行了操作。所以当函数执行完毕返回后,实参的变化被保留下来。 int&fun(int&c){...} 函数的返回值是一个引用,所以可以作为赋值语句中的左值使用。 1、const修饰指针变量时,基本含义: 1)如果唯一的const位于符号*的左侧(constint*p=&a;),表示指针所指数据是常量,数据不能通过本指针改变,但可以通过其他方式进行修改;指针本身是变量,可以指向其他的内存单元。 2)如果唯一const位于符号*右侧(int*constp=&a;),表示指针本身是常量,不能让该指针指向其他内存地址;指针所指的数据可以通过本指针进行修改。 3)在符号*的左右各有一个const时,表示指针和指针所指数据都是常量,既不能让指针指向其他地址,也不能通过指针修改所指向的内容。 constint*p=&a;//指向常量的指针 int*constp=&a;//常量指针 constint*constp=&a;//指向常量的常量指针 ①参数个数不同;②参数类型不同;③不可以通过函数的返回值类型区分调用--> intsame(int,double);doublesame(int,double;)无法通过返回值类型来区分是调用的哪一个,所以这两个不是重载。 1、指针变量中保存的是一个地址,也成指针指向一个地址。 2、关于空间分配: 3、使用new运算符动态申请的内存空间,需要在使用完毕后释放。C++提供了delete运算符,用来释放动态分配的内存空间。 delete运算符的基本用法: delete指针;delete[]指针; 十一、用string对象处理字符串 1、C++标准模板库中提供了string数据类型,专门用于处理字符串。string是一个类,这个类型的变量称为“string对象”。 2、要在程序中使用string对象,必须在程序中包含头文件string,即在程序的最前面,要加上如下语句:#include