实验一类和对象Visual C++ 6.0集成开发环境的使用:Visual C++系列产品是微软公司推出的一款优秀的C++集成开发环境,其产品定位为Windows 95/98、NT、2000 系列Win32 系统程序开发,由于其良好的界面和可操作性,被广泛应用。
由于2000 年以后,微软全面转向.NET 平台,Visual C++6.0 成为支持标准C/C++规范的最后版本。
1.启动安装完系统后,可以选择如下两种方式启动1) 点击Windows “开始”菜单,选择“程序”菜单下“Microsoft Visual Studio 6.0”子菜单下的快捷方式Microsoft Visual C++ 6.0 启动Visual C++ 6.0。
2) 点击Windows “开始”菜单,选择“运行”,输入msdev,即可启动。
启动后的界面如下:图 1 启动界面2.建立工程选择“File”菜单下的“New”菜单项或直接按Ctrl+N,启动新建向导,如图2 所示:图 2 新建向导选择在“Projects”属性页选择Win32 Console Application,在Project Name 中输入项目名称demo,在Location 中选择项目文件,如图2 中c:\test\demo,项目所有文件将保存在此文件。
输入完毕,单击确定按钮,进入下一界面如图3:图 3 项目类型向导在图 3 所示界面中选择a simple application,然后点击Finish 按钮,系统显示图4 所示界面。
如果想退回上一步可以选择“Back”按钮。
图 4 项目信息在图 4 中选择OK 按钮,系统完成项目的创建,并保存项目相关的信息。
项目的目录结构如图5 所示。
1) Demo.dsw 是项目工作区文件,双击此文件,即可打开此项目;2) Demo.dsp 为项目文件;3) demo.cpp 是项目中的一个源程序;stdafx.h 和stdafx.cpp 为自动创建的源程序,一般不用修改。
图 5 目录结构3.保存工程保存工程比较简单,选择File 菜单中的Save workspace 即可。
这还不够,项目由多个源程序构成,在保存工程时,需要保存相关的源程序,通过选择File 菜单中的Save 命令分别保存修改后的源程序即可。
4.打开工程选择File 菜单中的Open workspace,选择相应的项目工作区文件或项目文件即可,例如本例中打开“C:\test\demo\demo.dsw”即可,打开后的界面如图6 所示。
图 6 demo 项目1) 打开源程序文件有两种方式可以打开源程序文件。
a) 从File 菜单选择open 命令,输入相应文件名即可打开相关源程序,例如“C:\test\demo\demo.cpp”b) 在图6 所示FileView 页中选择相应的文件,单击即可。
2) 编辑源程序在图 6 所示主窗口中,即可直接编辑程序文件。
将文件demo.cpp 的内容修改如下:#include "stdafx.h"#include <stdio.h>int main(int argc, char* argv[]){printf("Hello, world\n");return 0;}3) 保存源程序选择File 菜单中的Save 命令即可保存当前文件,或直接按Ctrl+S4) 新建源程序选择File 菜单中的new 命令,在新建向导中,选择Files 属性,选择C++Source File,并在File 中输入文件名,单击OK 即可。
图7 新建文件向导5.编译源程序选择Build 菜单中的Compile 命令,或直接按Ctrl+F7 即可直接对当前打开的源程序进行编译,系统在如图8 所示界面显示代码中的编译结果。
图8 系统输出窗口6.链接程序选择Build 菜单中的Build 命令,或直接按F7 即可直接对当前项目进行链接,系统在如图9 所示窗口链接结果。
图9 链接结果7.运行程序选择Build 菜单中的Excute 命令,或直接按Ctrl+F5 即可直接运行,图10 为程序运行结果。
图10 运行结果一、实验目的1、练习C++对C语言的扩充部分内容的编程,并且通过练习调试程序能够总结出错信息,为以后的编程学习打下基础。
2、通过上机练习学会类和对象的定义方法。
3、熟悉构造函数和析构函数的特点和功能。
4、通过上机练习进一步弄清下述概念。
(1)对象数组、堆对象、子对象和常量对象;(2)指向类成员的指针,指向对象的指针,指向对象数组的指针、对象指针数组;(3)对象作为函数的参数、对象引用作为函数的参数和对象指针作为函数的参数。
二、实验环境硬件环境:PC586以上;操作系统:Windows 2000;系统软件:Visual C++ 6.0三、实验内容1.按教材P16-19的介绍的内容熟悉Visual C++ 6.0的基本用法,将例1.4,1.5的程序输入计算机中,用其练习单文序和多文件应用程序的实现方法;1.4#include<iostream.h>int add(int,int);void main(){int a,b;a=5;b=7;int c=add(a,b);cout<<"a+b="<<c<<endl;}int add(int x,int y){return x+y;}1.5f2.cpp#include<iostream.h>int add(int,int);void main(){int a,b;a=5;b=7;int c=add(a,b);cout<<"a+b="<<c<<endl;}f3.cppint add(int x,int y){return x+y;}2.P79教材中例3.2程序。
该程序段虽然不是一个完整程序,需要写出main()的内容,但是该程序中出现了条件编译预处理命令。
要求通过调试此程序练习对条件编译命令的使用;3.上机调试教材中P118例4.5程序。
注意该程序中出现了引用调用。
回答下列问题:(回答问题写入实验报告)#include<iostream.h>void swap3(int &x,int &y){int temp;temp=x;x=y;y=temp;cout<<"x="<<x<<","<<"y="<<y<<endl;}void main(){int a(5),b(9);swap3(a,b);cout<<"a="<<a<<","<<"b="<<b<<endl;}⑴引用调用和传值调用比较有什么不同?⑵引用调用和传址调用比较有什么不同?⑶引用调用在C++中为什么比传址调用使用的多?4.上机调试教材中P127例4.15程序,学会重载函数的定义方法。
函数重载的条件是什么?不满足条件的重载会出现什么问题?请上机试试。
(回答问题写入实验报告)#include<iostream.h>int min(int a,int b);int min(int a,int b,int c);int min(int a,int b,int c,int d);void main(){cout<<min(13,5,4,9)<<endl;cout<<min(-2,8,0);}int min(int a,int b){return a<b?a:b;}int min(int a,int b,int c){int t=min(a,b);return min(t,c);}int min(int a,int b,int c,int d){int t1=min(a,b);int t2=min(c,d);return min(t1,t2);}5、上机调试教材中例5.2程序。
熟悉类的定义方法和对象的定义方法,进一步了解对类中私有成员的操作方法。
#include<iostream.h>class TPoint{public:void SetPoint(int x,int y);int Xcoord(){return X;}int Ycoord() {return Y;}void Move(int xOffset,int yOffset);private:int X,Y;};void TPoint::SetPoint(int x,int y){X=x;Y=y;}void TPoint::Move(int xOffset,int yOffset){X+=xOffset;Y+=yOffset;}void main(){TPoint p1,p2;p1.SetPoint(3,5);p2.SetPoint(8,10);p1.Move(2,1);p2.Move(1,-2);cout<<"x1="<<p1.Xcoord()<<",y1="<<p1.Ycoord()<<endl;cout<<"x2="<<p2.Xcoord()<<",y2="<<p2.Ycoord()<<endl;}6、上机调试教材中例5.5程序。
在调试分析中,请注意下述语法内容:(回答问题写入实验报告)#include<iostream.h>class TPoint{public:TPoint(int x,int y){X=x;Y=y;}TPoint(TPoint&p);~TPoint(){cout<<"Destructor Called.\n";}int Xcoord(){return X;}int Ycoord(){return Y;}private:int X,Y;};TPoint::TPoint(TPoint&p){X=p.X;Y=p.Y;cout<<"Copy_initialization Constructor Called.\n";}TPoint f(TPoint Q);void main(){TPoint M(20,35),P(0,0);TPoint N(M);P=f(N);cout<<"P="<<P.Xcoord()<<","<<P.Ycoord()<<endl;}TPoint f(TPoint Q){cout<<"ok\n";int x,y;x=Q.Xcoord()+10;y=Q.Ycoord()+20;TPoint R(x,y);return R;}⑴构造函数,包括拷贝初始化构造函数的定义和调用;⑵对象作为函数参数时,如何将实参值传递给形参?⑶对象被创建后,何时调用析构函数来释放对象?⑷构造函数和析构函数是如何被自动调用的?7、上机调试教材中例5.11程序。