C++ primer第一章 <开始> 阅读笔记

一、在windows上运行c++脚本

先安装MingW:安装教程
在这里插入图片描述
默认生成一个a.exe:在这里插入图片描述

很奇怪为什么gcc不行g++可以?
在这里插入图片描述
在某种程度上gcc和g++都可以编译.cpp后缀的程序,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接。
后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。
编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的在这里插入图片描述
g++ -o生成的是.exe了,总的来说就是g++一掺和好好的几步都会让他直接走到尽头生成.exe ^^

正常分段步骤:

  1. 预处理,不会产生新文件:
    在这里插入图片描述
  2. 编译,产生.s文件:
    在这里插入图片描述
  3. 汇编,产生.o文件(gcc指令具有包含性,直接gcc -c .cpp就包含上面两步)
    在这里插入图片描述
  4. 链接,只有g++能完成
    在这里插入图片描述

二、输入输出控制流

std::cout << "111" << std::endl;
等价于
(std::cout << "111") << std::endl;

上述输出语句使用了两次<<运算符。因为此运算符返回其左侧的运算对象,因此第一个运算符的结果成为了第二运算符的左侧对象。这样就可以将输出请求连接起来,链中每个运算符的左侧运算对象都是相同的。
endl的效果是结束当前行,并将于设备关联的缓冲区中的内容刷到设备。缓冲刷新操作可以保证到目前为止程序所处都真正写入输出流中,而不是仅停留在内存中等待写入流。
调试过程中的打印语句应该保证一直刷新流,否则输出可能还停留在缓冲区中导致崩溃未知的错误判断。

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

这个语句在输入enter的时候不会停止循环,但在输入字母时会退出循环(证明不会默认类型转换为ASCII码),输入文件结束符(ctrl+z)再按enter也会退出,unix或mac系统是用ctrl+D

三、类简介

类机制是C++最重要的特性之一,C++最初的设计焦点就是能定义使用上像内置类型一样自然的类类型。其内定义了类对象可以执行是会发生的所有动作。

四、引入#include

#include时包含来自标准库的头文件时应该用<>保卫文件名,对于不属于标准库的头文件,如自己写的.h文件,则用双引号包围。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值