当前课程知识点:面向对象程序设计(C++) >  第一讲 课程简介与编程环境 >  1.1 编程环境与工具 >  程序结构与编译链接

返回《面向对象程序设计(C++)》慕课在线视频课程列表

程序结构与编译链接在线视频

程序结构与编译链接

下一节:源程序拆分

返回《面向对象程序设计(C++)》慕课在线视频列表

程序结构与编译链接课程教案、知识点、字幕

好朋友们下面我们给大家讲讲

编写程序的一些基本的环境和工具

因为面向对象的这种设计的思想

是在我们编写代码设计程序的过程当中

去理解和掌握的

首先一个很重要的

我想我们先回顾一下

原程序的它的基本的结构

大家看这是一个源代码

那么在这个代码里它比较简单

首先前面的红色的部分

是这个程序的头文件和它的编译指令

这个部分呢主要是为了后面

我们去往屏幕做输出的时候用到的

这个这些我们在程序设计基础

那门课程里头其实大家已经学习或者看到过了

下面是一个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这个值

面向对象程序设计(C++)课程列表:

第一讲 课程简介与编程环境

-1.0 课程定位、教学内容

--课程定位与教学内容

-1.0 课程定位、教学内容--作业

-1.1 编程环境与工具

--程序结构与编译链接

--源程序拆分

--多文件编译链接的方法

-1.2 main函数的命令行参数

--main函数的命令行参数

-作业一--作业

第二讲 基础语法(1)

-2.1 变量定义

--变量定义

-2.2 变量的初始化、类型推导与基于范围的循环

--变量的初始化、类型推导与基于范围的循环

-2.3 函数重载

--函数重载

-2.4 函数参数的缺省值与追踪返回类型的函数

--函数参数的缺省值与追踪返回类型的函数

-2.5 类的定义

--类的定义

-2.6 类成员的访问权限与友元

--类成员的访问权限与友元

-第二讲 基础语法(1)--作业二

第三讲 基础语法(2)

-3.1 构造函数析构函数

--构造函数析构函数

-3.2 赋值运算符重载

--赋值运算符重载

-3.3 流运算符重载

--流运算符重载

-3.4 函数运算符重载

--函数运算符重载

-3.5 下标运算符与自增减运算符重载

--下标运算符与自增减运算符重载

-3.6 静态成员与常量成员

--静态成员与常量成员

-3.7 对象组合

--对象组合

-3.8 移动构造函数

--Video

--Video

-3.9 default修饰符

--Video

-第三讲 基础语法(2)--作业三

第四讲 基础语法(3)

-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

期末考试

-期末考试--作业

程序结构与编译链接笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。