论坛首页 编程语言技术论坛

其实你应该这样学C++(连载)

浏览 9122 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (8)
作者 正文
   发表时间:2012-11-12  
C++
内容简介  
     各位程序员朋友,有一句话我们想真诚送给各位:学习永无止境。我们要时刻给自己注入新的知识、新的活力。只有这样才能永葆我们的竞争力,而不被高速发展的社会所淘汰。
  《其实你应该这样学C++》内容丰富,深度和广度兼顾。既有关于C++编程语言知识的学习,又有求职经验的传授。主要作为初学者的轻松入门指南,又可以帮助中高级读者进一步提高编程的水平。

   发表时间:2012-11-12  
目录
第1部分  劝学篇
第1讲  来自C++的一封情书
第2部分  求学篇
第2讲  工欲善其事,必先利其器
2.1  C++的发展概述
2.2  Microsoft Visual Studio
2.2.1  简介
2.2.2  成长档案
2.3  系统的配置和要求
2.4  安装方法
2.5  VS 2005界面的介绍
2.6  开发环境的设置
2.7  小结
第3讲  开心一刻:第一个C++程序
3.1  第一个C++程序
3.2  程序代码解析
3.2.1  #include指令
3.2.2  命名空间
3.2.3  main()函数
3.2.4  body——函数体
3.2.5  函数返回值
3.2.6  输入输出流
3.2.7  程序注释
3.3  具体的C++程序的创建和运行
3.4  C++特点分析
3.5  小结
第4讲  内功入门:数据类型
4.1  基本组成——“拼音”
4.2  标识符
4.3  关键字
4.4  “变色龙”——变量
4.4.1  变量的定义
4.4.2  变量名
4.4.3  变量的初始化和赋值
4.4.4  融会贯通
4.5  “专一的我”——常量
4.5.1  整型常量
4.5.2  浮点型常量
4.5.3  字符型常量
4.5.4  字符串常量
4.5.5  逻辑型常量
4.5.6  常量的定义
4.6  基本数据类型
4.7  小结
第5讲  沟通纽带:操作符与表达式
5.1  算术操作符
5.1.1  “-”——负数操作符
5.1.2  “+”——正数操作符
5.1.3  常规运算符
5.2  赋值操作符
5.3  条件操作符
5.4  关系操作符
5.5  逻辑操作符
5.5.1  !——逻辑非
5.5.2  &&——逻辑与
5.5.1  ||——逻辑或
5.6  自增自减操作符
5.6.1  前自增自减操作
5.6.2  后自增自减操作
5.7  逗号操作符
5.8  复合表达式的求解
5.9  融会贯通
5.10  小结
第6讲  牙牙学语:简单语句
6.1  表达式语句
6.2  空语句
6.3  小结
第7讲  十字街头:选择语句
7.1  if语句
7.2  Switch语句
7.3  融会贯通
7.4  小结
第8讲  转呀转:循环语句
8.1  While语句
8.2  Do while语句
8.3  For语句
8.4  嵌套循环
8.5  小结
第9讲  歇息啦:跳转语句
9.1  Break语句:完全休息
9.2  Continue语句:歇一圈再跑
9.3  Goto语句:我要去那
9.4  小结
第10讲  让你晕:数组和指针
10.1  一维数组
10.1.1  一维数组的定义
10.1.2  一维数组的初始化
10.1.3  一维数组的使用
10.2  二维数组
10.2.1  二维数组的定义
10.2.2  二维数组的初始化
10.2.3  二维数组的使用
10.3  字符数组
10.3.1  字符数组的定义
10.3.2  字符数组的初始化
10.3.3  字符串处理的函数
10.4  指针
10.4.1  指针的定义
10.4.2  指针的声明
10.4.3  指针的操作
10.5指针与数组
10.5.1指针与一维数组
10.5.2指针与多维数组
10.5.3指针与字符数组
10.6指针与函数
10.7关于指针的综合讲座
10.7.1再谈指针
10.7.2指针的算术运算
10.7.3运算符&和*
10.7.4指针表达式
10.7.5数组和指针的关系
10.7.6指针和结构类型的关系
10.7.7指针和函数的关系
10.7.8指针类型转换
10.7.9指针的安全问题
10.8  经典数据排序法介绍
10. 8.1冒泡排序法
10. 8.2选择排序法
10. 8.3插入排序法
10. 8.4希尔排序法
10.9  小结
第11讲  独创招式:类和对象
11.1  类的出身:定义和声明
11.2  类的杀伤半径:作用域
11.3  类的数据成员
11.4  类的成员函数
11.5  类与结构的区别
11.6  对象
11.6.1  对象的创建
11.6.2  对象与类的关系
11.7  构造函数
11.7.1构造函数的定义及特点
11.7.2默认构造函数
11.8析构函数
11.8.1默认析构函数
11.8.2自定义析构函数
11.9友元
11.9.1  友元类
11.9.2  友元函数
11.10  类的继承与派生
11.10.1  继承和派生的基本概念
11.10.2  类的访问控制属性
11.10.3  基类与继承对象的初始化
11.10.4  类的多重继承
11.11  融会贯通
11.12  小结
第12讲  函数
12.1  函数的定义
12.2  函数的声明
12.3  函数的特点
12.4  函数的传值方式
函数的参数
12.5  函数的返回值
12.6  变量的分类
12.6.1  局部变量
12.6.2  全局变量
12.6.3  静态变量
12.6.4  外部变量
12.7  函数的调用
12.7.1  用指针调用函数
12.7.2  使用数组调用函数
12.8  内联函数
12.9  函数重载
12.9.1  函数重载的定义
12.9.2  函数重载与重复声明
12.10  函数的嵌套和递归
12.11  main函数
12.12  融会贯通
12.13  小结
第13讲  保险公司:异常处理
13.1  异常的分类
13.1.1  语法错误
13.1.2  运行错误
13.2  典型异常回眸
13.3  异常的处理
13.3.1  try语句块——发现问题
13.3.2  catch语句块——分析解决问题
13.3.3  throw语句块——得出结论
13.4  小结
第14讲  模板
14.1  函数模板
14.1.1  模板的定义
14.1.2  模板的使用
14.1.3  函数模板的特殊化
14.2  类模板
14.2.1  类模板的定义
14.2.2  类模板的使用
14.2.3  类模板的特殊化
14.3  小结
第15讲  容器
15.1  容器的定义
15.2  容器的分类
15.3  顺序容器
15.3.1  顺序容器的定义
15.3.2  顺序容器元素的初始化
15.3.3  顺序容器元素类型的规定
15.3.4  迭代器范围
15.3.5  顺序容器的基本操作
15.3.6  顺序容器的比较
15.4  关联容器
15.4.1  关联容器的定义
15.4.2  map类型
15.4.3  set类型
15.4.4  multimap类型和multiset类型
15.5  小结
第16讲  结构与联合
16.1  结构体
16.1.1  结构体类型的定义
16.1.2  结构体类型的变量定义与初始化
16.1.3  结构体内部成员的访问
16.1.4  结构体的内部结构
16.1.5  结构体与数组
16.1.6  结构体与函数
16.1.7  结构体与指针
16.1.8  结构体与引用
16.1.9  位域
16.2  联合体
16.2.1  联合体类型的定义
16.2.2  联合体类型变量的定义与初始化
16.2.3  联合体内部成员的访问
16.3  小结
第17讲  文件
17.1  文件的定义
17.2  文件的分类
17.2.1  依据数据存储格式
17.2.2依据文件存取方式
17.3  文件流
17.3.1  文件流对象
17.3.2  文件的打开与关闭
17.3.3  文件流成员函数
17.4  ofstream类
17.5  ifstream类
17.6  文件随机访问
17.7  天人合一——融会贯通
17.8  小结
第18讲  虚函数与多态
18.1  虚函数
18.2  虚属性继承
18.3  纯虚函数和抽象类
18.4  早期绑定和动态绑定
18.5  小结
第19讲  C++预处理器
19.1  编译预处理指令
19.2  包含文件
19.3  #define指令
19.4  #undef指令
19.5  条件指令
19.5.1  #if指令
19.5.2  #endif指令
19.5.3  #if defined指令
19.5.4  #else指令
19.5.5  #elif指令
19.5.6  #error指令
19.6  小结
第20讲  运算符重载
20.1  运算符重载的基本概念
20.2  单目运算符重载
20.3  双目运算符重载
20.4  小结
第21讲  算法与流程图
21.1  算法
21.1.1  算法的概念
21.1.2  算法的特点
21.1.3  算法的实现
21.2  流程图
21.2.1  流程图的概念
21.2.2  流程图的组成
21.2.3  流程图的绘制
21.3  算法的表示方式
21.3.1  自然语言表示
21.3.2  流程图表示
21.3.3  伪代码表示
21.3.4  N—S图表示
21.3.5  PAD图表示
21.4  小结
第22讲  我的地盘——命名空间
22.1  命名空间的概念
22.2  命名空间的定义
22.3  命名空间的使用实例
22.4  命名空间的名称
22.5  using声明和using指令
22.6  命名空间和类的关系
22.7  小结
第23讲  常见试题精选
23.1  各种类型数字的判断
23.2数学趣味题和解方程
23.3类的使用
23.4文件的操作
第3部分  谋略篇
第24讲  如何渡过你的大学
24.1  大一,调整自我,做好人生规划
24.2  大二,打好坚实的基础
24.3  大三,理论与实践相结合
24.4  大四,思考人生
第25讲  求职过程
25.1  正确的求职心态
25.2  正确对待工作压力
25.3  应聘求职
25.3.1  简历的投递
25.3.2  简历投递需要注意的问题
25.3.3  招聘的流程
25.4  简历
25.4.1  简历的分类
25.4.2  简历的制作
25.5  求职信
25.5.1  求职信的书写
25.5.2  求职信范例
25.6  面试
25.6.1面试的特点
25.6.2面试的技巧
25.6.3自我介绍的准备
25.6.4面试材料的准备
25.6.5着装的准备
25.6.6面试类型分类
25.6.7常见面试形式
25.6.8面试十二忌
25.6.9面试谈薪的技巧
25.6.10如何把握面试的结束时间
25.7  勇于和一些招聘说“不”
25.8  签约

0 请登录后投票
   发表时间:2012-11-12  
第3讲  开心一刻:第一个C++程序
你知道吗?昨天晚上我做了一个梦,梦到你在对我唱歌:
你可知,
我是多么的想了解你——C++;
可是不知道,
如何才能了解你;
我焦虑,
我彷徨;
请你告诉我,告诉我;
……
3.1  第一个C++程序
所以呢,为了满足你那小小的好奇心,对我有一个初步的了解,我就先从整体上做一个自我介绍。
其实呢,不管你学习什么编程语言,编程的起初阶段都是写一些最简单的程序,通过不断的积累,不断的尝试,难度逐步加深。那么,我们就来看我们的第一程序——we are together!
程序的代码如下:
#include<iostream>                      //输入输出流头文件
using namespace std;                    //使用命名空间
void main()                              //主函数
{
    cout<<”we are together!”<<endl;       //输出数据
}
这个程序的输出结果如图3-1所示。

图3-1  运行结果
几乎所有想了解我们家族的人,都是从这样一个最简单的程序学起的,不管是经典的“hello world”(在很多C++语言类的书籍里面都有这样一个程序),还是“we are together”,它们最本质的东西都是相通的。也许你看了上面的这些,一头雾水,觉得很茫然,不知道这都在说些什么,不过注意千万不要上火啊。刚刚开始,不明白没有关系,这也很正常。不过,如果听了我下面的讲解你还不明白,那就是你的不对啦!
0 请登录后投票
   发表时间:2012-11-12  
3.2  程序代码解析
相信你现在的感觉不是很好吧,感觉这都是些什么“甲骨文”啊,怀疑是不是外星人的暗语呢,哈哈,你如果这样想就对了,说明你是一个正常的人,因为没有人刚刚开始就能理解这些的,下面的就让我替你来揭开这神秘的面纱,探索其中的奥妙吧!
打起十二分精神,我们准备出发啦!
GO!
3.2.1  #include指令
在我们C++家族里面,几乎只要是一个程序,不管大小都离不开#include指令。所以,它的重要性就不言而喻了。那么到底什么是#include指令?下面就听我来给你详细的解释。带有“#”开头的语句,一般是指宏定义或者预编译指令。
例如:#define PI=3.1415;
这就是一个宏定义语句。在这条语句当中,我们通常把,“PI”称为“宏模板”,把“3.1415”称为“宏扩展”。你也许会疑惑这个有什么作用呢?听我给你举一个例子你就明白,这个东西是多么的好了。
假如,现在学期结束了,你们班要进行综合测评,评出你们班的奖学金获得者。当在计算你们班每个人的综合测评的时候,起初你们把“智育”的比例设置为了0.6,而现在呢,由于你们教务处的领带换了,新官上任三把火嘛,他第一把火就是要改革这个计算的模式,现在要求将这个比例修改为0.65。这个时候你会怎么办,一个一个地进行修改,是不是觉得很麻烦,而且也没有必要啊?这个时候呢,宏定义就充分展示出了它的优势所在,你只要将“智育”这个因子首先进行一个宏定义,然后,修改它的一个“宏扩展”就可以了。
具体的代码我们可以这样来写:
#define zhiyu=0.6;
修改为:
#define zhiyu=0.65;
这样的话,我们同样实现了修改的功能,而不需要找出每一个需要进行修改的地方进行逐个的修改。这样既节约了时间,避免了很多麻烦,同时又保证了正确率。
那么,我们再回到我们的程序当中来。
#include<iostream>
这个就是预编译指令啦!
它包含了一个头文件,这个头文件的作用就是对输入输出进行函数的声明。特别需要注意的是,在C++里面,所有的函数必须先声明后使用,就好比你们宿舍需要开通网络的话,你必须先到你们学校的网络中心去报名,以后才能使用。它们的道理是一样的,记住了吗?
在后面上午章节,我们还会详细的对C++内部的预处理器进行讲解,欲知后事如何,请持续关注哦!
0 请登录后投票
   发表时间:2012-11-12  
3.2.2  命名空间
通常使用using指令来使用命名空间成员。它的一般语法格式如下:
using namespace::name;
使用using声明的好处在于,一旦我们使用了它,就可以直接的引用名字,而不需要再引用该名字的命名空间,同时它也避免了相同的名字引起的冲突。
我们可以看看下面这两个例子,进行对比一下。
第一:使用using声明。
#include<iostram>
using std::cin;              //使用using声明
using std::cout;             //使用using声明
void main()
{
  int v1;
  cin>>v1;                 //输入数据
  cout<<v1<<endl;          //输出数据
}
第二:没有使用using声明。
#include<iostram>
void main()
{
  int v1;
  std::cin>>v1;             //输入数据
  std::cout<<v1<<endl;      //输出数据
}
通过两种方法的对比,我们可以知道,第一种使用using指令更加的简洁方便。难道你不觉得吗?
0 请登录后投票
   发表时间:2012-11-12  
3.2.3  main()函数
其实这个函数就是传说中的——主函数。我们有时候也称它为入口函数。在一个C++程序里面可以有很多个函数,但是只有一个主函数。
如果这样说你还不明白的话,没有关系,我给你举个例子,相信聪明的你看完就明白了。就好比在传统社会里面,一个家庭里面可以有好几个人,但是呢,只有一个是当家作主的,这个当家作主的呢,就相当于C++程序里面的主函数了,而家庭里面的普通成员,就好比是C++程序里面的其他的函数了。现在你应该明白了吧。
一定要注意的是:一个C++程序有且仅有一个主函数main()。
3.2.4  body——函数体
函数体是被一对大括号“{”和“}”括起来的部分。其中函数体由很多的语句和函数组成,不过也可以是空语句。一般用“{”来表示函数的开始,用“}”来表示函数的结束。
特别需要提醒的是:大括号要成对的出现。
0 请登录后投票
   发表时间:2012-11-12  
3.2.5  函数返回值
我们可以注意到,在主函数main()的前面还有一个:void。它是用来表示主函数的返回值类型的,这里表示返回类型为空值。在主函数的后面的一对括号里面,是用来表示主函数的参数的,在这个例子里面是不带参数的。主函数既可以带参数也可以不带参数。
3.2.6  输入输出流
在C++语言里面,要使用输入输出功能的时候,我们需要使用iostream头文件,同时在进行输入的时候,我们使用cin,而且在它的后面紧跟着的是符号:“>>”;在进行输出的时候,我们使用cout,而且同样的在它的后面紧跟着的符号是:“<<”。
亲爱的,这里你一定要记清楚了,输入和输出后面跟的符号,不要搞混淆了啊!
同时不知道你有没有这样的疑惑,在这些语句的后面有时候有“endl”这样一个符号,它到底有什么作用呢?其实我给你演示两个例子对比一下你就明白了。
第一个示例:有“endl”。
#include<iostream>
using namespace std;
void main()
{
      cout<<”we are together”<<endl<<”forever!”<<endl;   //末尾使用了endl
}
程序的运行结果如图3-2所示:

图3-2  运行结果
第二个示例:没有“endl”。
#include<iostream>
using namespace std;
void main()
{
      cout<<”we are together”<<endl<<”forever!”;   //末尾没有使用endl
}
程序的运行结果如图3-3所示:

图3-3  运行结果
通过对比,相信你已经看出来其中的不同啦吧!“endl”就是用来换行的啦!真聪明!
不过这里可不要怪我没有提醒你啊,“endl”的末尾不是数字“1”哦!是小写的英文字母“l”哦!
切记切记啊!
0 请登录后投票
   发表时间:2012-11-12  
3.2.7  程序注释
程序的注释,其实说白了,也就是相当于一个“说明书”。你写了一段代码,可能别人并不知道你写的是什么,因为虽然有一个统一的语法标准,但是,你可能给变量取的名字的意义其他人不一定能够很好的理解,所以这个时候就需要你给你写的程序添加一个“说明书”,这个“说明书”也就是所说的注释。
注释又分为两种,一种是单条语句的注释。也就是指对一条程序语句的一个说明,这个时候可以选择使用“//”这个符号,然后将注释的语言写在后面;或者也可以使用“/*……*/”这个符号,将要说明的内容写在省略号部分。另一种,就是对一段语句块进行注释,这个时候只能使用“/*……*/”这个符号,同样地,将要说明的内容写在省略号部分。
这样,当别人看到我们的程序以后,也可以很清楚的明白我们想要表达的意思了,从而方便了不同程序之间的集成和引用。
0 请登录后投票
   发表时间:2012-11-12  
3.3  具体的C++程序的创建和运行
下面一起来动手创建一个属于自己的C++程序吧。
(1)打开microsoft visual studio,在“文件”菜单下面选择“文件”|“新建”|“项目”命令,弹出“新建项目”对话框,如图3-4所示。

图3-4  “新建项目”对话框
(2)在“项目类型”窗口中选择“Visual C++”选项,同时在右侧的“模板”列表框中选择“Win32控制台应用程序”选项,如图3-5所示。

图3-5 win32控制台应用程序
(3)在“名称”和“位置”文本框中设定自己项目的名称和存储位置,如图3-6所示。

图3-4  创建控制台应用程序对话框
(4)然后单击“确定”按钮,出现下面的界面,单击“下一步”按钮,如图3-5所示。

图3-5  应用程序向导
(5)单击“下一步”按钮,出现如图3-6所示的界面。此时,选择默认设置就可以了,单击“完成”按钮。

图3-6  选择“控制台应用程序”
(6)单击“完成”按钮,出现图3-7的编辑窗口。

图3-7  编辑窗口
(7)此时我们在编辑窗口,输入我们自己的代码,如图3-8表示。

图3-8  “输入代码”窗口
(8)选择“生成”|“生成解决方案”命令。这个时候如果程序代码没有错误,我们可以看到,在图3-9左下角有“生成成功”的提示。此时,选择“调试”|“开始执行(不调试)”命令。

图3-9  编译执行过程窗口
(9)最后输出程序的运行结果,如图3-10所示。

图3-10  运行结果
通过这九个步骤,属于我们自己的C++程序就创建完成啦!
0 请登录后投票
   发表时间:2012-11-12  
3.4  C++特点分析
通过上面你对C++语言的接触,现在你对它有什么样的印象呢?你来分析看看,它是一个什么样子的“人”?
首先,我们对C++的一个整体的构成脉络有了一个比较清晰的认识,它的内部有着很严密的组织架构,像头文件啊,主函数啊(main()),函数体啊,输入输出流啊……这些都通过统一的语言规则有机的融合在了一起,从而体现出了它的强大功能。
说得很好,还有呢?
其次,就是在一个C++的工程文件里面,都通过不同的后缀名来表示不同的文件,像用.cpp来表示语言源文件的扩展名,像.h表示头文件的扩展名等等。
不错,观察的够仔细的,这里我还需要补充说一下。
为了使编译器能够区别是C语言还是C++语言,C++语言体系规定用“.cpp”(意即C Plus-Plus)作为C++语言源文件的扩展名以区别于C语言用的“.C”文件扩展名。虽然仅差两个字母,但编译时的处理却相差甚远。“cpp”的文件扩展名与操作系统无关。与C++语言源文件相关的头文件扩展名一般仍用“.h”,但有些操作系统也有规定使用“.hpp”充当头文件扩展名的。
还有吗?没有的话,我再来补充一点。
C++语言既保留了C语言的有效性、灵活性、便于移植等全部精华和特点,又添加了面向对象编程的支持,具有强大的编程功能,可方便地构造出模拟现实问题的实体和操作;编写出的程序具有结构清晰、易于扩充等优良特性,适合于各种应用软件、系统软件的程序设计。用C++编写的程序可读性好,生成的代码质量高,运行效率仅比汇编语言慢10%~20%。
3.5  小结
相信现在的你应该心情很不错吧,感觉很有成就感吧。首先,现在对整个一个C++程序的框架有了一个大致的了解;其次,就是知道了,关于C++程序的创建得基本步骤;最后,我们通过了一个实例进一步的加深了我们对我们所知道知识的理解。
和别人分享快乐,将给别人带来一份快乐。
回忆自己的快乐,将给自己带来双倍的幸福和快乐。
回忆学习过的知识,将给你带来更加深刻的理解和感悟。
加油哦!
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics