[这次要入门成功]C++学习-Chapter1学习笔记

2020.3.7
1.2输入输出
标准库4个IO对象:cin标准输入、cout标准输出、cerr标准错误、clog程序一般运行信息。
程序所运行的窗口与这些对象关联起来。
#include
cout<< 输出运算符:其左侧运算对象必须为ostream对象,右侧运算对象为要打印的值,计算结果为左侧运算对象,即写入了给定值的ostream对象;有std::cout<<“first”<<"second"这样情况时,其实就是从左边开始先对第一个运算符进行计算,计算结果作为第二个运算符的左侧对象,即(std::cout<<“first”)<<“second”;
cin>>输入运算符,与输出运算符原理相同,从设备端得到输入。
endl 操作符的特殊值,std::cout<<std::endl实现其的打印,代表当前行的结束(相当于\n),同时把缓冲区的内容刷新到设备中,该刷新操作保证了到目前为止的所有输出都真正写道输出流中,而不是停留在内存中。
std,其为命名空间,标注库定义的所有名字都在命名空间std中,使用命名空间可以避免不经意的命名冲突。
:: 域操作符,显示地指出我们想使用的某个命名空间的名字 命名空间::名字。
如果窗口一闪而过,在return 0;前加入system(“pause”);

练习1.6解答:程序不合法,输出操作符<<左侧无ostream对象

1.3 注释简介
注释界定符不能嵌套。如下面这样会错误。
/*
/**/
/
练习1.7解答:
注释嵌套错误示例
注释嵌套错误提示
根据以上可以看到,多行注释符嵌套时,按顺序将第一个/与第一个/匹配,导致中间的/被忽略,因此第一个/之后的本来想注释的内容被暴露,因此会有错误。
练习1.8解答:
题目:
C++prime plus练习1.8
第三行错误: 由于第一个/与第一个/匹配了,因此第一个
/后面的内容作为程序,但其语法也不正确。
在这里插入图片描述在这里插入图片描述
第四行正确:输出/*。第一个/和第一个/配对了,然后双引号了一下,然后引号后面的又配对了。引号真是个神奇的东西。
在这里插入图片描述
1.4 控制流
1.4.3 读取不定量的数据
利用输入流读取while(std::cin>>vlalue),
使用一个istream对象作为条件时,效果是检测流的状态。如果流有效则检测成功。当遇到错误或者文件结束符时,istream对象的状态会变为无效,处于无效状态的istream对象会使条件变假。
windows系统下,文件结束符是ctrl+z.
输入错误有:遇到非整数值,如字符,如下可以看到遇到小数点时,把小数点之前的值作为有效输入读到了,而小数点为输入错误。
在这里插入图片描述
1.5 类简介
一个类就是定义了一个数据类型,以及与其关联的一组操作,目的就是为了使用上与内置类型一样自然的类类型(class type)。
根据书中例子,定义了一个类Sales_item在头文件.h中。
定义了类的头文件调用:#include<>用来调用来自标准库的头文件
#include" "用来调用自己定义的头文件
定义类类型的变量 Sales_item item; (类比 int i;即可理解),称item为一个Sale_item对象。
在写类时即定义了类对象可以执行的所有操作,包含创建对象、为类对象赋值、加法或输入输出会发生什么事。下面是书中Sales_item类定义的可对一个Sales_item对象做的操作(目前已知)
可读写类型对象(用输入输出运算符);
可在类对象之间赋值(=);
可将类对象相加(+);则可用复合赋值运算符(+=);

Sales_item的读写在头文件中定义如下:
在这里插入图片描述
可以看到,Sales_item类中对读入操作的定义是读入三个值分别赋给类对象s的三个属性,并且有效读入后可计算总销售额s.revenue。Sales_item类中对输出操作的定义可以输出四个属性(其中还调用了一些创建的过程)。
此处根据书上代码测试了一下:(可以调试去理解)
如果在输入时,输入三个值后,则读入成功,会输出。
输入的不到三个,如果不遇到错误输入或者文件结束符,则不会执行输出,直到有三个值;
倘若输入的不到三个值,但出现了错误输入或文件结束符结束了输入,则根据类定义的输出操作,输出的是0 0 0。(这里通过逐行调试可以看到,在输出的时候才创建了总销售额这个属性)。

类成员函数调用
item.isbn() 对象.成员函数(也叫方法)
点运算符 . 只能用于类类型的对象,即其左侧运算对象必须是一个类类型对象,右侧必须是该类型的一个成员名。
调用运算符()用来调用一个函数,其为一对圆括号,里面放置实参列表,也可能为空。

后面还有两个程序待学习,先到这里吧,累啦