2.1 进入C++

  • 注释以//打头
  • 想要执行程序后保持窗口打开(有的情况下执行完后窗口会自动关闭)可以在return前加上cin.get()

2.1.1 main()函数

  • 函数结构为:函数返回类型 函数名 (形参列表) 函数体
  • C++中main()函数是操作系统和程序之间的连接,即运行C++程序时,系统自动调用main()函数;如果没有main()函数,系统会指出未定义
  • 用作库函数的代码可以不需要main()函数,且库函数一般用于生成动态链接库(DLL),被其他C++代码调用

2.1.2 C++注释

// C++风格的注释,不可以跨行
/* C风格的注释,可以跨行 */

2.1.3 C++预处理器和iostream文件

  • 编译器对源代码中的#include <iostream>预处理后,源代码中的#include <iostream>被替换成了iostream中的代码,此时源代码变成了一个包含iostream内容的复合文件

2.1.4 头文件名

  • 头文件约定

    #include <iostream.h>    //C风格头文件
    #include <math.h>           //C++旧风格头文件
    #include <iostream>       //C++新风格头文件
    #include <cmath>            //C转C++后的头文件
    

2.1.5 名称空间

  • 通过名称空间来避免多个库中重名的定义,尤其是在使用不同产品的库函数时
  • std是C++标准库的命名空间
  • 如果命名空间放在全局,则在全局调用不需要加上名称空间前缀;如果在函数内申明命名空间,则可使用的范围也仅在函数内部
using std::cout;      // 或者在全局直接这样申明,使用cout时就不需要再加std::
using std::endl;
using std::cin;

2.1.6 使用cout进行C++输出

  • C++中双引号引起来的字符是字符串
  • \n在字符串中表示换行
  • \n 与 endl换行的区别是,endl确保程序继续运行,而有的系统中执行\n后需要输入信息才会出现

2.1.7 C++源代码的格式化

  • 有些语言是面向行的,这意味着每条语句占一行,比如python;但在C++中,分号才表示一条语句的结尾,这就意味着,using namespace std这一语句中的三个词即使使用回车写成三行,也是合法的代码。因此在C++中,只要能使用空格的地方都可以使用回车接着写,尽管在书写方面不易阅读,但它是合法的代码;但一句完整的字符串不能使用空格分割成两行
  • 一行代码中不可分割的元素叫做标记(token),空格、制表符、回车统称为空白(white space)

2.2 C++语句

2.2.1 声明语句和变量

  • C++在首次使用变量前申明即可

2.2.2 赋值语句

  • =被称为赋值运算符
  • C++(和C)可以连续使用赋值运算符,例如,下面的代码是合法的:
    int steinway;
    int baldwin;
    int yamaha;
    yamaha = baldwin = steinway = 88;     // 赋值顺序从右向左
    

2.2.3 cout的新花样

  • cout相比C中的printf函数,cout能自动区分需要输出的内容是int型的25还是string型的"25";而在printf中,需要用%s, %d来区分

2.3 其他C++语句

2.3.1 使用cin

  • iostream将cout和cin定义为流的对象,输入和输出变量时,变量是作为流进行输入输出

2.3.2 使用cout进行拼接

  • 不加endl即可;此外还可以使用连续的<<进行多行打字,例如:
cout << "Now you have 14";
cout << "carrots";
cout << endl;
// 等价于
cout << "Now you have 14"<< "carrots"<< endl;

2.3.3 类简介

  • C++的核心概念就是面向对象,类是实现面向对象的途径
  • 类是一种用户定义的数据类型,类定义描述的是表示了什么信息,可以对这些信息执行什么操作
  • 类实例(对象)是调用方法的实体

2.4 函数

2.4.1 使用有返回值的函数

  • 被调函数、调用函数的概念
  • 在使用函数之前,C++编译器需要明确参数类型和函数返回值类型
  • 提供参数类型和返回值类型等信息的方式是使用 函数原型语句,C++程序应当为程序中使用的每个函数提供原型,原型格式如下:
    double sqrt(double);    // function prototype
    

    原型结尾的分号表示该语句是一个函数原型,函数原型一般写在头文件中;如果去掉分号,那么该语句是一个函数头,而编译器会要求读取该函数头的函数头;函数头一般写在源文件中

  • 函数原型只描述函数接口;函数描述函数实现细节
  • 使用老式头文件引用xxx.h可以同时使用在C和C++中

2.4.2 函数变体

  • void使用

    int rand(void);                 // 函数不接收任何参数
    int rand();                          // 函数隐式地表明不接收任何参数
    void rand();                      // 函数不返回任何参数
    

2.4.3 用户定义的函数

  • C/C++不允许函数嵌套定义
  • main函数的返回值是返回到系统,且main返回0表示程序运行正常,1表示运行发生错误

2.4.4 用户定义的有返回值的函数

  • 函数特性包括:函数原型,函数头,函数体,接受参数,返回值

2.4.5 在多函数程序中使用using编译指令

  • using namespace std被放在文件开头处,表示该文件的所有函数都能使用名称空间std中的所有元素
  • using namespace std被放在函数内部,表示只能该函数能够使用名称空间std中的所有元素
    该声明作用范围只在该函数;即使该函数内调用了其他函数,而其他函数使用了名称空间中的元素而没有该声明,会报错
  • using namespace std被放在函数内部且放在特定函数前(例如 using std::cout),那么在该函数内部可以直接调用该特定函数而不加名称空间前缀
  • 完全不适用using编译指令,直接在调用名称空间函数前加上名称空间前缀

「C++」C++ Primer Plus 笔记:第二章 开始学习C++相关推荐

  1. C++Primer读书笔记----第二章变量和基本类型

    前段时间学习iphone开发,非常力不从心,很多C/C++的类库代码看不明白.大学的时候都学过C/C++,但是基本上忘光了,现在做C#开发,经常写出来一些性能低下的代码,究其原因就是原理掌握不扎实,乱 ...

  2. 计算机网络(第五版 作者:AndrewS.Tanenbaum David J.Wetherall 清华大学出版社)读书笔记----第二章的学习

    计算机网络第二章--物理层读书笔记 1.物理层是网络的技术设置,物理层的材质和带宽决定了最大的传输速率. 2.传输介质的分类:引导性(有线介质)和非引导性(无线介质). (1)有线介质:磁介质.双绞线 ...

  3. 「C++」C++ Primer Plus 笔记:第三章 处理数据

    面向对象编程的本质是设计并扩展自己的数据类型. C++内置的数据类型分为两组:基本类型和复合类型.基本类型包括整数和浮点数:复合类型是在基本类型的基础上构建的数组,字符串,指针和结构. 3.1 简单变 ...

  4. 「C++」C++ Primer Plus 笔记:第十七章 输入、输出和文件

    17.4 文件输入和输出 17.4.1 简单的文件I/O 需要在头文件中#include<fstream> 写入文件 创建一个ofstream对象管理输出流,每个对象建立一个输出缓冲区,分 ...

  5. 「C++」C++ Primer Plus 笔记:第一章 预备知识

    第一章 预备知识 1.1 C++ 简介 1.2 C++ 简史 OOP:面向对象编程 1.2.1 C语言 编译器:将高级语言翻译成特定计算机的内部语言(底层语言),使用同一高级语言的不同平台编译器可以使 ...

  6. C++ Primer 读书笔记 - 第二章

    1. 这章谈到了初始化和赋值其实是不同的,这使我想起了构造函数中的普通构造函数,拷贝构造函数,赋值构造函数,详见博文C++中的构造函数与析构函数 string这个类有default construct ...

  7. 深入理解 C 指针阅读笔记 -- 第二章

    Chapter2.h #ifndef __CHAPTER_2_ #define __CHAPTER_2_/*<深入理解C指针>学习笔记 -- 第二章*//*内存泄露的两种形式1.忘记回收内 ...

  8. 《Go语言圣经》学习笔记 第二章 程序结构

    Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...

  9. Web前端开发笔记——第二章 HTML语言 第四节 超链接标签

    目录 前言 一.超链接标签 (一)链接其它子网页 (二)链接其它站点 (三)虚拟超链接 二.从当前页面链接到指定位置 三.链接的访问情况 四.在新窗口中打开链接 例题 结语 前言 本节介绍超链接标签即 ...

最新文章

  1. phpMyAdmin的配置
  2. Ubuntu中Vim 中文乱码解决方法
  3. Java监听器的用法(一):内部类监听器
  4. 科沃斯擦窗机器人擦不干净怎么办_家用自动擦玻璃机器人哪种好呢?玻妞和科沃斯擦窗机器人能干净吗...
  5. 高斯平稳随机过程仿真
  6. sqlserver 创建对某个存储过程执行情况的跟踪
  7. 前端学习(2185):tabberitem和路由结果
  8. Android 中文API (65) —— BluetoothClass[蓝牙]
  9. 智能媒体管理(IMM) Python SDK DEMO
  10. 设计模式系列--Singleton
  11. 自动绕过锐捷客户端开热点
  12. jep java_jep-java-3.4-trial java表达式分析器 - 下载 - 搜珍网
  13. 采集PLC数据转MQTT上报实现对PLC远程调试和远程程序上下载
  14. android 微信照片,手机微信图片怎么恢复 答案让人难以置信
  15. 多粒度网络(MGN)的结构设计与技术实现
  16. 游戏模型制作的注意事项 项目模型规范总结
  17. ZYNQ7000 学习(二十五)纯PL 实现独立显存VGA驱动并显示画面
  18. python导入随机库_怎么用python导入随机库?
  19. 从前慢-项目小型秒杀系统
  20. <博弈论> HDU1846

热门文章

  1. Flask框架(SQLAlchemy(python3版本)中添加数据 )
  2. 电气6机30节点数据介绍(常适用于优化调度)
  3. 贪心算法讲解(集合覆盖问题,旅行商问题求解)
  4. 使用pipenv建立虚拟环境解决python打包exe文件过大的问题(附打包带图标,多个py文件打包exe)
  5. Java 设计模式之模板方法模式
  6. OpenCASCADE:写IGES
  7. OpenCASCADE:Modeling Algorithms模块几何工具之插值
  8. OpenCASCADE:适用于 Android 的 OCCT AndroidQt 示例
  9. boost::mpl模块BOOST_MPL_ASSERT_MSG相关的测试程序
  10. boost::planar_canonical_ordering用法的测试程序