当前课程知识点:面向对象程序设计(C++) > 第一讲 课程简介与编程环境 > 1.1 编程环境与工具 > 程序结构与编译链接
好朋友们下面我们给大家讲讲
编写程序的一些基本的环境和工具
因为面向对象的这种设计的思想
是在我们编写代码设计程序的过程当中
去理解和掌握的
首先一个很重要的
我想我们先回顾一下
原程序的它的基本的结构
大家看这是一个源代码
那么在这个代码里它比较简单
首先前面的红色的部分
是这个程序的头文件和它的编译指令
这个部分呢主要是为了后面
我们去往屏幕做输出的时候用到的
这个这些我们在程序设计基础
那门课程里头其实大家已经学习或者看到过了
下面是一个main 函数
在这个函数里我们只是cout输出了一个信息
这个信息会在屏幕上程序运行的时候会显示出来
我们通常把这部分这个蓝色的部分呢
称为它的程序的主函数的定义
这个程序是比较简单的
当然我们也可以把它复杂一些
比方说像下面的这个代码
在这个代码里主程序主函数
它增加了两个变量的定义
然后这两个变量呢可以通过cin来把它获得
这个cin 也是我们在前一门课程
程序设计基础课程里已经讲到过的
它的目的呢是从键盘上获得用户的输入
那这里有AB这两个变量
这个变量的定义这些基本的这些知识
我们在程序设计基础课里头讲过了
所以我们这个地方就直接拿过来
给大家呈现这个代码希望大家注意
当我得到了A跟B的内容之后
通过A加B的运算直接可以把它cout出来
那这是一个稍稍复杂一点点的主函数的定义
下面看一个再复杂一点的
那这里就出现了函数
就是中间这个绿色的这个部分
这个函数呢它完成了A跟B的相加
所以它是用AB这两个参数
然后return它们的这个结果
在主程序里呢可以直接调用
这个相加的这种函数
然后来返回3和4它的这个结果
这就是一个程序的一个基本结构
我们可以看到呢它大体上会分为一个
头文件和编译指令
第二部分呢通常会有一些辅助的小函数
第三部分呢就是你的主程序
这是我们已经通过前面一门课程
大家已经基本了解和熟悉了的
那么有了这个源代码之后
计算机当然它是看不懂C++的代码的
需要我们对它进行编译和链接
然后才能去运行
所以一般的对于这个源代码来讲
需要经过编译器的处理
需要经过链接器的处理
然后才能得到最后的可执行的程序
这个可执行的程序
由于现在不同的计算机系统
它去执行程序的基础的部分
是有差异的
所以我们在最后编译链接的时候
出来的那个可执行的代码
实际上是跟平台有关系
比方说你的苹果电脑你装的linux系统
你装的windows系统等等这些它会有一些差异
那么要在不同的平台上去编译的时候得到的代码
得到的可执行的程序
并不能够去通用
所以源代码需要在另外的平台上
重新编译链接才能够执行
那下面这个呢是我们在苹果电脑上
来做的一个实验
我们可以看到呢这个ls是一个命令
那么它检查一下当前目录里
都有哪些文件存在
我们可以看到
首先我们看到的那里只有一个文件
叫ex1.cpp
那接着我们用了g++这个命令
这都是在控制台窗口里敲进去的g++
然后是-c ex1.cpp
那这个-c 就表示是去用g++里的
编译器的这种功能
是把代码进行一个编译
我们发现经过编译之后在当前目录下面
多了一个.o文件
这就是它的编译出来的中间结果
那链接怎么做呢就是下面一行代码
这个命令g++ -o ex1.out ex1.o
就是把.o文件经过链接
生成一个在这个基础上可以运行的可执行的代码
它的名字叫ex1.out
那我们看到经过这样的一个链接之后
当前目录下多了一个ex1.out这样的一个文件
那我们可以对它进行运行
这个下面就是./ex1.out
我们可以看到它运行结果是7
刚才我们代码里大家看到它是add34
所以它得到的结果正好是7
我们可以看看这个ex1.cpp的内容
这个看源代码的内容是cat这个命令
在这个os的这个操作系统的计算机上
它去看代码的这个指令是cat
在linux机上也是这样子的
可能在windows系统上面它不是这个命令
大家根据我们前面介绍给大家的
这种学习方法在网上可以查到
如果你是用windows的话
你怎么去在控制台窗口里
去看源代码的内容
那么这就是我们在用g++来编译链接的一个例子
那当然了这个刚才我们的事例里
是把编译链接是分成两步来完成的
其实呢也可以用一步来完成
就像我们现在给大家看到的这个截图一样
我们可以直接用g++ ex1.cpp
那它就自动的会把它编译出来
那么这个时候由于你没有指定它的
可执行代码的名字所以它默认是生成a.out
我们去运行a.out一下能得到这个7
当然了你说我想去指定这个输出文件是什么
我们也可以去带上-o这个指令
就像下面大家看到的g++ -o ex1.out ex1.cpp
也就是把ex1.cpp进行编译链接一步完成
让它输出的可执行程序是ex1.out
这就是这条命令的它的含义
我们可以看到用ls这个命令
可以列出来本目录下的一个文件的清单
我们看到里面的确生成了一个
叫做ex1.out的一个可执行代码
你运行它一样能得到7这个值
-1.0 课程定位、教学内容
-1.0 课程定位、教学内容--作业
-1.1 编程环境与工具
--源程序拆分
-1.2 main函数的命令行参数
-作业一--作业
-2.1 变量定义
--变量定义
-2.2 变量的初始化、类型推导与基于范围的循环
-2.3 函数重载
--函数重载
-2.4 函数参数的缺省值与追踪返回类型的函数
-2.5 类的定义
--类的定义
-2.6 类成员的访问权限与友元
-第二讲 基础语法(1)--作业二
-3.1 构造函数析构函数
--构造函数析构函数
-3.2 赋值运算符重载
--赋值运算符重载
-3.3 流运算符重载
--流运算符重载
-3.4 函数运算符重载
--函数运算符重载
-3.5 下标运算符与自增减运算符重载
-3.6 静态成员与常量成员
-3.7 对象组合
--对象组合
-3.8 移动构造函数
--Video
--Video
-3.9 default修饰符
--Video
-第三讲 基础语法(2)--作业三
-4.1 继承
--Video
-4.2 函数重写
--Video
-4.3 虚函数
--Video
--Video
-4.4 自动类型转换
--Video
-4.5 禁止自动类型转换
--Video
-4.6 强制类型转换
--Video
-4.7 函数模板
--Video
-4.8 类模板
--Video
-4.9 成员函数模板
--Video
-4.10 模板特化
--Video
-作业四--作业
-5.0 引言
--Video
-5.1 从FOP到OOP
--Video
-5.2 对象在哪里
--Video
-5.3 接口在哪儿
--Video
-5.4 实现接口
--Video
-5.5 变与不变:多态的威力
--Video
-6.0 引言
--讨论
-6.1 从负载监视器的设计开始
-6.2 接口的分离与单一责任原则
-6.3 委托与接口的进一步分解
-6.4 分离不同层面的可变性
-7.0 引言
--Video
-7.1 迭代器
--Video
-7.2 迭代器的实现
--Video
-7.3 迭代器与模板
--Video
-7.4 算法与数据的解耦
--Video
-7.5 抽象结构与类模板
--Video
-7.6 函数对象与算法分解
--Video
-7.7 基于模板的策略模式
--Video
-8.0 引言
--Video
-8.1 已有资源的组合
--Video
-8.2 适当引入接口
--Video
-8.3 接口不变时的功能变化
--Video
-8.4 装饰
--Video
-8.5 责任的传递与责任链
--Video
-8.X 小结
--Video
-9.0 引言
--Video
-9.1 通过封装增加隔离、应对变化
--Video
--Video
-9.2 增加抽象层,应对变化
--Video
--Video
-9.3 相互关联对象的创建
--Video
-9.4 示例:自动组卷系统设计
--Video
-9.5 设计思路(上)
--Video
-9.6 设计思路(中)
--Video
-9.7 设计思路(下)
--Video
-9.X 小结
--Video
-课程总结
--Video
-期末考试--作业