【C++Primer笔记】1. 第一章 开始

前言

本笔记的目的为记录下读《C++ Primer》时一些需要注意和不懂的点,便于巩固和温习,不然可能看完了就忘了。

本节知识点

main函数

  • 通常程序的返回值为0代表成功,返回值为1代表失败。

  • main函数的返回值必须为int。

输入输出

  • 输入输出有关的:

    • 库:iostream;
    • 类型:istream和ostream;
    • 对象:cin(标准输入),cout,cerr和clog(输出程序运行时的一般性信息)。
  • <<叫做输出运算符,其左侧必须是一个ostream对象,右侧是要打印的值。它的作用是把给定的值写入ostream对象中。

  • 输出运算符的计算结果就是其左侧的ostream对象。

    如

    cout << 1 << endl;
    

    等价于

    (cout << 1) << endl;
    

    因此可以连起来传递。

  • >>为输入运算符,它的左侧为一个istream对象,右侧为运算对象。它的作用是从istream对象中读入数据,并存入所给对象中。

  • 输入运算符的计算结果也是其左侧的istream对象。

    如

    cin >> v1 >> v2;
    

    等价于

    (cin >> v1) >> v2;
    

    也等价于

    cin >> v1;
    cin >> v2;
    

    感觉这个用法比较神奇🙄。

  • endl是一个被称为操纵符的特殊值。写入endl的作用是结束当前行,并将缓冲区中的内容刷到设备中。缓冲刷新可以保证程序目前为止产生的输出都真正写入输出流中,而不是在内存中等待。

命名空间

  • 命名空间可以解决名字冲突问题。
  • 标准库定义的所有名字都在命名空间std中。

注释

  • 编译器会忽略注释,因此注释对程序的性能不会造成任何影响。

  • 修改代码时,不要忘了更新注释。(不然给别的程序员或者自己误解,就等着被骂吧~)

  • /*和*/叫注释界定符,不能嵌套。

  • 神奇的实验

    cout << "/*";  // 输出/*
    cout << /* "*/" */;  // 错误
    cout << /* "*/" /* "/*" */;  // 输出空格/*空格
    

控制流

for语句

for(初始化语句; 循环条件; 表达式)

读取数量不定的输入数据
while (cin >> value)

原理是istream对象遇到文件结束符(end-of-file,EOF)或遇到无效的输入(如value是int而cin读入的对象是float)时,它的状态会变为无效,导致条件变为假。

EOF的不同键入方式:

Windows: ctrl+z,然后回车(实测了以下,确实)

Unix: ctrl + d

风格

C++语言的风格自由,但要坚持使用某种风格。

类简介

  • 一个类定义了一个类型,以及与其关联的一组操作。
  • 成员函数是类中的一个函数,也叫方法,可通过点运算符.来访问,调用运算符()来调用。

小结

本节是书中的 第1章 开始 中的全部内容。这一章主要讲了一些C++的基础知识,包括main函数、输入输出、命名空间、注释、控制流等,最后还对类进行了简单的介绍。书中利用第一章的知识在最后实现了一个书店程序。

本章读起来还算比较轻松,get了一些小知识点,如>>和<<的返回值,以及读取数量不定的数据的方法等。相信第一章中的很多知识点在后面会做一个更详细的介绍。