Chapter02 第一节 开始学习C++
2.1 进入C++
第一个示例程序:
//myfirst.cpp
#include <bits/stdc++.h>
using namespace std;
int main()
{
cout << "Come up and C++ me some time.";
cout << endl;
cout << "You won't regret it!" << endl;
return 0;
}
2.11 main()函数
- 在c++11强制标准中,mian应定义为int类型,在某些也需要写成void类型,然而因为void不是强制标准,所以部分环境下是无法编译的,考虑到软件的泛用性,最好写成int类型。在C语言中,mian的类型声明可以省略,默认类型为int类型。C++中,
()和(void)等效,表示不接受任何参数,C中不一样(空着表示沉默?)。另外,ISO的C++标准允许没有return x语句,在函数结尾默认加入return 0。 - C++独立程序的入口规定必须是
main(),并且大小写敏感。 在某些DLL模块或者特殊环境中,可以没有mian()函数。当然,他也会调用其他名字的主函数。
2.12 注释
两种注释方式:
// xxxxxxx/* xxxxxxx*/
2.13 预处理文件
C++内置一个预处理器,在程序进行主编译之前对源文件进行处理。
C++程序编译过程:C++源程序->编译预处理->编译->汇编程序->链接程序->可执行文件
- 编译预处理: 读取源代码,处理伪指令和特殊符号。伪指令包括宏定义、条件编译、头文件,特殊符号包括
LINE、FILE等。- 编译: 将预编译生成的文件翻译成中间代码/汇编代码,生成汇编文件
- 汇编: 将中间代码/汇编代码翻译成机器码,生成目标文件
- 链接: 将汇编产生的目标文件链接起来,还包括引用的库、调用的库文件函数等。链接完成之后即可生成可执行文件。
2.14 头文件
C++兼容老式的C头文件,如math.h,在C头文件中使用C++特性,最好还是找C++的头文件,如math.h -> cmath(ISO标准委员会要求不使用任何扩展名)
2.15 命名空间
命名空间使用
using编译指令,这是编译指令的一种。命名空间可以理解为对一块空间的命名。如有两个封装好的库,分别都有一个
check()的方法,使用命名空间来区分不同的库的不同的check()方法。A::check(),B::check()using namespace std让std对其空间内的所有名称可用,还可以麻烦点,在代码内使用std::cout。在using中也可以指定命名空间的名称,如using std::cout。这样可以避免一些潜在的风险。
2.16 Cout输出语句

cout<< "xxx" << endl中,cout是一个预定义好的对象,负责输出。<<是插入运算符,可以重载。endl为换行控制符,可以用\n代替。
2.17 代码格式化
尽管每个人的代码风格不尽相同,但是代码风格是一个很重要的事情,直接影响代码可读性和重构的难易度。尽量使用通用的代码风格,注意控制缩进、括号位置等。
Chapter02 第一节 开始学习C++的更多相关文章
- Linux第一节课学习笔记
我的目标是考过RHCE 开源软件有使用.复制.传播.收费.修改及创建衍生品自由,其中后二者只有开源软件才有,前四者开闭源共有.
- 第一节,学习cocos2d-x的前期准备
1,我用的mac系统,在mac系统上装上cocos2d-x的模板 2,用doxygen工具装上API,这个非常重要,没有API的开发不叫开发,因此我们要习惯看API 3,知道怎么查看cocos2d-x ...
- MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件
MapServer Tutorial——MapServer7.2.1教程学习——第一节:MapServer的基本配置管理,静态地图应用以及MapFile文件 前言 万事开头难,有了<MapSer ...
- OpenNebula学习第一节OpenNebula Front-end Installation
一.说说情怀 随着公司硬件开发资源的不足,构建一个云平台似乎重要了起来.当然,也不是这个平台搭建的主力,出于工作的需求和个人兴趣爱好,接下来就来学习一下OpenNebula相关的东西,这是第一节课,先 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- 1001-MySQL学习-第一节自习课
MySQL学习(第一节自习课) 一. 软件下载.安装 下载地址:https://dev.mysql.com/downloads/installer/ 位置:mysql->installer-&g ...
- VUE2.0实现购物车和地址选配功能学习第一节(来源--慕课网河畔一角)
第一节 vue知识 vue-resource:和后台交互的一个插件,实现get.post和jsonp等功能.(替代jQuery) vue特点: 1.易用:通过创建vue实例,{{}}绑定数据十分方便 ...
- seajs第一节,seajs基本使用
什么是seajs,它是干什么使用的,可以去网上搜索一下, 官网:http://seajs.org/docs/ 基本使用seajs <!DOCTYPE html> <html> ...
- 2014年度辛星html教程夏季版第一节
从今天起开始在博客园开启自己的html教程啦,先从第一节开始把,首先推荐一个网站,就是http:/www.w3cschool.cc,这是一个公开的教学网站,但是它有一个问题,那就是虽然很全面,但是不是 ...
随机推荐
- zabbix_server: error while loading shared libraries: libperconaserverclient.so.18
zabbix_server: error while loading shared libraries: libperconaserverclient.so.18 [root@dba_test_002 ...
- 怎么画一条0.5px的边
编者按:本文由人人网FED发表于掘金,并已授权奇舞周刊转载 什么是像素? 像素是屏幕显示最小的单位,在一个1080p的屏幕上,它的像素数量是1920 1080,即横边有1920个像素,而竖边为1080 ...
- 【NOIP2016提高A组模拟10.15】打膈膜
题目 分析 贪心, 先将怪物按生命值从小到大排序(显然按这个顺序打是最优的) 枚举可以发对少次群体攻击, 首先将所有的群体攻击发出去, 然后一个一个怪物打,当当前怪物生命值大于2,如果还有魔法值就放重 ...
- kafka——分布式的消息队列系统
总听公司人说kafka kafka... 所以这玩意到底是个啥? 好像是一个高级版的消息队列,什么高吞吐量,数据持久,消息均衡,emmm https://blog.csdn.net/nawenqian ...
- DOM操作元素
DOM 操作元素 JavaScript的DOM操作可以改变网页内容.结构和样式.我们可以利用DOM操作元素来改变元素里面的内容.属性等. DOM操作元素: 一.操作元素:(一)innerText .( ...
- eclipse在线安装ermaster插件
eclipse在线安装ermaster插件: https://www.jianshu.com/p/449fbcd9141a ERMaster的安装和使用 https://www.cnblogs.com ...
- mysql ALTER TABLE语句 语法
mysql ALTER TABLE语句 语法 作用:用于在已有的表中添加.修改或删除列.无铁芯直线电机 语法:添加列:ALTER TABLE table_name ADD column_name da ...
- input样式去掉苹果手机的默认样式
/*<!---->去掉苹果短的样式*/ input[type="button"], input[type="submit"], input[type ...
- 【BZOJ1066】 [SCOI2007]蜥蜴
Description 在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到平 ...
- linux socket设置阻塞与非阻塞
非阻塞IO 和阻塞IO: 在网络编程中对于一个网络句柄会遇到阻塞IO 和非阻塞IO 的概念, 这里对于这两种socket 先做一下说明: 基本概念: 阻塞IO:: socket 的阻塞模式 ...