C++ primer读书笔记(一)
前言
研究生开学也已经大半个月了,导师的方向是做C++开发。我这个苦逼的研究僧也只有跟着老师的项目学习C++。我之前也只有C语言和一小部分Java的基础,和大家一样对于C++的学习都是从零开始的。而且我的本科还不是计算机专业,是隔壁的通信专业,对于C++的学习仅限于24个学时的大学计算机基础。所以我们一起学习,共勉!
对于C++的初步认识
因为之前学过一段时间的Java对于面向对象的概念有所了解,但是在Java中对象是通过new,连数组都要new才能使用。但是在C++中类还是作为一种数据类型进行使用。并且为了更好地封装,对于类里面所有的方法以及获取类的数据都是使用一个public的函数,避免直接访问内部私有的数据。这也是保护知识产权的一种手段,对外来说一个类就是一系列的接口,而不用知道其内部是如何实现的。
回归主题
认识输入输出流
C++在输入输出方面既继承了C语言中的,printf和scanf。又新增了IO语句,使用iostream库,在iostream库中包含两个基本类型istream和ostream分别表示输入流和输出流。在标准库中定义了四个输入输出对象分别是:
代码 | 名称 | 用法 |
---|---|---|
cin | 标准输入 | std::cin >> x; |
cout | 标准输出 | std::cout << x; |
cerr | 标准错误 | |
clog | 一般性信息 |
在C++中引入外部的文件使用的是#include <头文件>或者#include"头文件.h"。类比于Java就像import引入jar包一样。
大家或许看到了我在前面表格的地方使用*std::cin >> x;*这就引出来了一个知识点就是命名空间。
标准库
大家在后面的书中就会看到很多代码在前两行就写出**using namespace std;**这就是一个使用标准命名空间std。命名空间的主要作用就是为了帮助我们避免一些不必要的名字定义冲突,但是引入这一方法之后的缺点就是每次使用一个来自命名空间的名字是必须加上==作用运算符( :: )==来指定名字作用的范围。
另外还有两个运算符没有提及 输入运算符(>>) 和 输出运算符(<<),作用就是接受一个对象作为其右侧运算对象,它从给定的i(o)stream读(写)数据。这个地方对于cin和cout的介绍还是很简单的,后面经过逐步学习后,这一部分的知识会逐步充实起来,cin和cout能够玩出的花样也会更加多的。
注释
最后一部分也是在以后的实际编程过程中运用十分广泛的,注释之于代码,就如同有道翻译之于我。在很多时候我们并不需要完全了解一个方法内部是如何实现的,而且对于接口的使用者来说也完全没得必要知道内部是如何实现的,但是使用者如何使用这个接口却是十分必要的。我们通常在一个方法或者函数开始的时候都会使用一段注释,向使用者介绍这个函数的功能以及如何注入参数才能使其正常运行。
对于注释有两种方法
第一种是针对一行代码进行注释,他的主要目的就是为了以后维护这个程序的程序员提供当时编写代码的思想。让接手的程序员能够快速上手
int main() {
Sales_item total;
if(std::cin >> total) {
Sales_item trans; //临时比较的对象
while (std::cin >> trans) {
if(total.isbn() == trans.isbn()) //如果图书的ISBN码相同则添加
total += trans;
else {
std::cout << total << std::endl;
total = trans;
}
}
std::cout << total <<std::endl;
} else {
std::cerr << "NO DATAS!" << std::endl;
}
return 0;
}
上面只是简单的使用了一下基于双斜杠的注释方式,这个双斜杠的注释可以用于代码中间但是要位于一行的最后,否则整段将被注释掉。
第二种是使用注释界定符以/*开始,以 */结束,
/*
* 这就是基于注释界定符方式的注释
*/
这种方式的优点就是可以使用多行注释,但是有一个需要注意的地方就是,不能嵌套
例如
/*
/*
* 这就是基于注释界定符方式的注释
*/
*/
这种情况编译器可能会出现误判比如可能吧第一个/*作为开始,第二个 / *作为注释内容的一部分,然后到第一个 / *就结束,后面的部分就变成代码了。这就会出现很严重语法错误。
结尾
其实后面还有一些关于while,for和if语句的介绍,我觉得这个在这里不是重点所以我就不再赘述了。而关于类的介绍将在第7章继续进行。所以今天的笔记分享就到这里了。我也是第二次使用这个CSDN的博客系统,如果有什么我在知识或者在语言上有什么错误的话,希望能够在下方的评论中给我指出来,我将万分感谢。加油!向着程序员的路拼吧!