C++程序的多文件组成
C++程序的多文件组成
【例3.32】 一个源程序按照结构划分为3个文件
// 文件1 student.h (类的声明部分)
#include<iostream.h>
#include<string.h>
class Student {
private:
char *name; // 学生姓名
char *stu_no; // 学生学号
float score; // 学生成绩
public: // 类的外部接口
Student(char *name1,char *stu_no1,float score1); // 构造函数
~Student(); // 析构函数
void modify(float score1); // 数据修改
void show(); // 数据输出
};
// 文件2 student.cpp (类的实现部分)
#include "student.h" // 包含类的声明文件
Student∷Student(char *name1,char *stu_no1,float score1)
{
name=new char[strlen(name1)+1];
strcpy(name,name1);
stu_no=new char[strlen(stu_no1)+1];
strcpy(stu_no,stu_no1);
score=score1;
}
Student∷~Student()
{
delete []name;
delete []stu_no;
}
void Student∷modify(float score1)
{ score=score1; }
void Student∷show()
{
cout<<"\n name: "<<name;
cout<<"\n stu_no: "<<stu_no;
cout<<"\n score: "<<score;
}
// 文件3 studentmain.cpp (类的使用部分)
#include "student.h" // 包含类的声明文件
void main()
{
Student stu1("Liming","990201",90);
stu1.show();
stu1.modify(88);
stu1.show();
}
【例3.33】 利用类表示一个堆栈(stack),并为此堆栈建立push()、 pop()及显示堆栈内容的showstack()等函数
//文件1 stack.h
#include <iostream.h>
#include <iomanip.h>
#include <ctype.h>
const int SIZE=10;
class stack{
int stck[SIZE]; // 数组,用于存放栈中数据
int tos; // 栈顶位置(数组下标)
public:
stack();
void push(int ch); // 将数据ch压入栈
int pop(); // 将栈顶数据弹出栈
void ShowStack();
};
// 文件2 stack.cpp
#include <iostream.h>
#include "stack.h"
stack∷stack() // 构造函数,初始化栈
{ tos= 0; }
void stack∷push(int ch)
{
if(tos==SIZE){
cout<<"Stack is full";
return;
}
stck[tos]=ch;
tos++;
cout<<"You have pushed a data into the stack!\n";
}
int stack∷pop()
{
if (tos==0){
cout<<"Stack is empty";
return 0;
}
tos--;
return stck[tos];
}
void stack∷ShowStack()
{
cout<<"\n The content of stack: \n" ;
if (tos==0){
cout<<"\nThe stack has no data!\n";
return;
}
for (int i=tos-1; i>=0;i--)
cout<<stck[i]<<" ";
cout<<"\n\n";
}
//文件3 stackmain.cpp
#include <iostream.h>
#include "stack.h"
main()
{
cout<<endl;
stack ss;
int x;
char ch;
cout<<" <I> ------ Push data to stack\n";
cout<<" <O> ------ Pop data from stack\n";
cout<<" <S> ------ Show the content of stack\n";
cout<<" <Q> ------ Quit... \n";
while (1){
cout<<"Please select an item: ";
cin>>ch;
ch=toupper(ch);
switch(ch){
case 'I':
cout<<"\n Enter the value that "<<"you want to push: ";
cin >>x;
ss.push(x);
break;
case 'O':
x=ss.pop();
cout<<"\n Pop "<<x<<" from stack.\n"; break;
case 'S':
ss.ShowStack();
break;
case 'Q':
return 0;
default:
cout<<"\n You have inputted a wrong item! Please try again!\n";
continue;
}
}
}
C++程序的多文件组成的更多相关文章
- [转]MSI安装程序中的文件替换
原文链接:http://teach.hanzify.org/article/652-1233562028.html 前言 最近有汉化朋友问起如何不重新制作MSI文件,而直接用汉化好的文件替换MSI安装 ...
- 使用GDB 追踪依赖poco的so程序,core dump文件分析.
前言 在windows 下 系统核心态程序蓝屏,会产生dump文件. 用户级程序在设置后,程序崩溃也会产生dump文件.以方便开发者用windbg进行分析. so,linux 系统也有一套这样的东东- ...
- 安装程序无法复制文件 convlog.exe的解决方法
在安装的时候出现一个错误提示“安装程序无法复制文件CONVLOG.EX_”,上网找了很多资料,都说是因为版本问题,考虑到自己的服务器安装的是2003 SP1,后来打了补丁到SP2的,也就认为是版本问题 ...
- VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)
VS2010/MFC编程入门之三(VS2010应用程序工程中文件的组成结构)-软件开发-鸡啄米 http://www.jizhuomi.com/software/143.html 鸡啄米在上一讲中 ...
- 将Java程序作成exe文件的几种方法【转载】
看到网上有同志的介绍将Java程序作成exe文件的方法,写的不错,但是也许是这篇文章完成的时间比较早,许多内容已经不合适了.我在这里补充几条: 一.exe4j 说明:exe4j可以将Jar文件制作成e ...
- PHP程序缓存之文件缓存处理方式
PHP程序缓存之文件缓存处理方式在开发程序过程中,缓存的设置大大提升程序效率,减小数据库负载.基本配置缓存和常规配置缓存 基本配置缓存在项目开发中类似这样子的格式: 文件:config.php $CF ...
- 程序一 用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。
用记事本建立文件src.dat,其中存放若干字符.编写程序,从文件src.dat中读取数据,统计其中的大写字母.小写字母.数字.其它字符的个数,并将这些数据写入到文件test.dat中. #inclu ...
- 微信小程序-02-项目文件之间配合和调用关系
微信小程序-02-项目文件之间配合和调用关系 我就不说那么多了,我是从官方文档拷贝的,然后加上一些自己的笔记,不喜勿喷 官方文档:https://developers.weixin.qq.com/mi ...
- ArcGIS 10 安装程序及破解文件
1.下载 ArcGIS 10 安装程序及破解文件 后面提供电驴的下载地址(可以使用迅雷.QQ旋风等下载工具下载),下载文件是一个光盘镜像文件:ArcGIS_Desktop10_122519.iso. ...
- IIS安装出现“安装程序无法复制文件CONVLOG.EX_”的解决办法
重新安装了一次IIS,结果就在重新安装的时候,出现安装程序无法复制文件CONVLOG.EX_,上网找了找资料,是因为secedit.sdb 数据库的问题,既然是因为这个文件的问题,那么我们就可以使用w ...
随机推荐
- C仿黑白棋版XO棋
两位玩家轮流在棋盘上放置不同颜色的棋子,一位玩家使用黑子,另一位使用白子,棋盘是一个偶数正方形. 只能将一个棋子放在对手的棋子旁边,使对手在水平.垂直.对角线方向上的棋子变成自己的棋子,游戏结束时,棋 ...
- RabbitMQ Management API调用
RabbitMQ在运行时,偶尔会有一些死信,即消息未正常消费,造成消息积压在消息队列中, 一直卡住,重复循环消费原来的消息队列 那么就需要有一种机制,来查看RabbitMQ是否有消息未正常消费,从而让 ...
- Mac和window生成ssh和查看ssh key
一.MAC系统 mac 系统开始就已经为我们安装了ssh 如果没有安装,首先安装 打开终端:$ ssh -v 查看ssh版本 OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec ...
- colormap是MATLAB里面用来设定和获取当前色图的函数。
下面将举例.描述MATLAB内建的色图.用户除了可以编程指定MATLAB内建的色图,还可以使用Plot Tools图形用具界面的Figure Properties面板中的Colormap菜单来选择一种 ...
- Cesium - Fabric 材质【转官网】
https://github.com/AnalyticalGraphicsInc/cesium/wiki/Fabric Fabric Hannah edited this page on 24 Dec ...
- I.MX6 dts 在哪里、怎么编译【转】
本文转载自:https://blog.csdn.net/wangliang888888/article/details/78349224 一.参考文档: 1. [i.MX] 修改了dts之后,如何重新 ...
- C++操作Mysql数据库/Linux下
本文链接:https://blog.csdn.net/Tanswer_/article/details/72796570想用C++写项目,数据库是必须的,所以这两天学了一下C++操作Mysql数据库的 ...
- Gradle: 一个诡异的问题(ERROR: Failed to parse XML AndroidManifest.xml ParseError at [row,col]:[5,5] Message: expected start or end tag)
今天同事说他下了一个老版本的AS项目死活编不过,我心想不就是一个项目么,编不过要么就是代码有问题,要么就是依赖库不完整这能有什么问题,于是自己在自己电脑试了下,结果自己也中招了: 乍一看这个错误,说是 ...
- Python去除文件中的空格、Tab键和回车
def stripFile(oldFile, newFile): '''remove the space or Tab or enter in a file, and output a new fil ...
- shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查)
shell编程系列22--shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) Shell脚本与MySQL数据库交互(增删改查) # 环境准备:安装mariadb 数据库 [ro ...