实验三

原创 2018年04月16日 11:01:41

实验目的和要求

  1、熟悉类的定义格式和类中成员的访问权限。

  2、构造函数与析构函数的调用时机与顺序。

  3、掌握对象的定义以及对象的初始化的时机与方法。

实验内容

  1、下面程序sy3_1.cpp中用ERROR标明的语句有错吧,在不删除和增加代码行的情况下,改正错误语句,使其正确运行。

运行程序如下:


#include<iostream>
using namespace std;
class Aa
{
  public:
      Aa(int i=0){a=i;cout<<"Constructor"<<a<<endl;}
      ~Aa(){cout<<"Destructor"<<a<<endl;}
      void print(){cout<<a<<endl;}
  private:
    int a;
};
int main()
{
    Aa a1(1),a2(2);
    a1.print();
   cout<<a2.a<<endl;//ERROR
    return 0;
}
错误如下:
修改程序如下:
#include<iostream>
using namespace std;
class Aa
{
  public:
      Aa(int i=0){a=i;cout<<"Constructor"<<a<<endl;}
      ~Aa(){cout<<"Destructor"<<a<<endl;}
      void print(){cout<<a<<endl;}
  private:
    int a;
};
int main()
{
    Aa a1(1),a2(2);
    a1.print();
    a2.print();
    return 0;
}

运行结果如下:

2、调试下列程序:
#include<iostream>  
using namespace std;  
class TPoint  
{  
public:  
    TPoint(int x=0,int y=0){X=x,Y=y;}  
    TPoint(TPoint &p);  
    ~TPoint(){cout<<"Destructor is called\n";}  
    int getx(){return X;}  
    int gety(){return Y;}  
private:  
    int X,Y;  
};  
TPoint::TPoint(TPoint &p)  
{  
    X=p.X;  
    Y=p.Y;  
    cout<<"Copy-initialization Constructor is called\n";  
}  
int main()  
{  
    TPoint p1(4,9);  
    TPoint p2(p1);  
    TPoint p3=p2;  
    TPoint p4,p5(2);  
    cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")\n";  
    return 0;  
}  

在程序中,将TPoint类的带有两个参数的构造函数进行修改,在函数体内增添下述语句:

      cout<<"Constructor is called\n";

(1)写出程序的输出结果,并解释输出结果;

程序如下:
#include<iostream>
using namespace std;
class TPoint
{
public:
    TPoint(int x=0,int y=0){X=x,Y=y;}
    TPoint(TPoint &p);
    ~TPoint(){cout<<"Destructor is called\n";}
    int getx(){return X;}
    int gety(){return Y;}
private:
    int X,Y;
};
TPoint::TPoint(TPoint &p)
{
    X=p.X;
    Y=p.Y;
    cout<<"Constructor is called\n";
    cout<<"Copy-initialization Constructor is called\n";
}
int main()
{
    TPoint p1(4,9);
    TPoint p2(p1);
    TPoint p3=p2;
    TPoint p4,p5(2);
    cout<<"p3=("<<p3.getx()<<","<<p3.gety()<<")\n";
    return 0;
}

运行结果如下:

(2)按下列要求进行调试:

       在主函数体内,添加下列说明语句:

        TPoint p4,p5(2);

调试程序会出现什么现象?为什么?如何解决?(提示:对已有的构造函数进行适当修改)结合运行结果分析如何使用不同的构造函数创建不同的对象。

现象:

为什么:

如何解决:

3、对教材中Li3_11.cpp的主函数做如下修改:

(1)将Heapclass *pa1,*pa2 改为Heapclass *pa1,*pa2,*pa3;

(2)在语句pa2=new Heapclass 后增加语句pa3=new Heapclass(5);

(3)将语句 if(!pa1||!pa2) 改为if(!pa1||!pa2||!pa3)

(4)在语句delete pa2 后增加语句delete pa3;

写出程序的输出结果,并解释输出结果。

程序如下:

#include<iostream>
using namespace std;
class Heapclass
{
public:
   Heapclass(int x);
   Heapclass();
   ~Heapclass();
private:
    int i;
};
Heapclass::Heapclass(int x)
{
    i=x;
    cout<<"Contstructor is called. "<<i<<endl;
}
Heapclass::Heapclass()
{
    cout<<"Default Contstructor is called."<<endl;
}
Heapclass::~Heapclass()
{
 cout<<"Default is called."<<endl;
}
int main()
{
   Heapclass *pa1,*pa2,*pa3;
   pa1=new Heapclass(4);
   pa2=new Heapclass;
   pa3=new Heapclass(5);
   if(!pa1||!pa2||!pa3)
   {
       cout<<"Out of Mcmory!"<<endl;
       return 0;
   }
   cout<<"Exit main"<<endl;
   delete pa1;
   delete pa2;
   delete pa3;
   return 0;
}

运行结果如下:

解释:

实验三 端口扫描实验

一、 实验目的         了解端口扫描的基本概念和工作原理         编写一个利用全连接的端口扫描程序,能显示目标主机的端口开放情况。要求能在命令行输入要扫描的目标主机和端口范围。比如:s...
  • DmxExcalibur
  • DmxExcalibur
  • 2017-07-11 15:24:58
  • 415

端口扫描实验报告

  • 2013年12月21日 13:30
  • 343KB
  • 下载

实验三

实验目的和要求  1、熟悉类的定义格式和类中成员的访问权限。  2、构造函数与析构函数的调用时机与顺序。  3、掌握对象的定义以及对象的初始化的时机与方法。实验内容  1、下面程序sy3_1.cpp中...
  • wanghuai_666
  • wanghuai_666
  • 2018-04-16 11:01:41
  • 23

SQL server 实验三

4.使用T-SQL语句创建表: 1)创建第1题中的student表,要求: ①sno列为主键; ②除monitor可为空值外,其他列不能为空; ③ssex列的默认值设为“男”;。 ④monitor为外...
  • adreammaker
  • adreammaker
  • 2017-03-08 15:33:50
  • 574

实验三 进程调度算法实验

  • 2010年05月25日 12:06
  • 4KB
  • 下载

MFC多线程<em>端口扫描</em>

MFC编程,网络与信息安全<em>实验</em>,<em>端口扫描</em>设计与实现,VC++6.0/Visual Stdio... MFC编程,网络与信息安全<em>实验</em>,<em>端口扫描</em>设计与...上传者: 三禾木 时间: 2017-11-23 综合...
  • 2018年04月08日 00:00

数据库实验三( 数据更新)

3.1 项目信息管理数据库 DDL(Oracle SQL)alter table Department drop constraint FK_DEPARTME_管理_TEACHER; alter ta...
  • HHH_go_
  • HHH_go_
  • 2017-06-01 20:28:43
  • 422

数据库实验三答案

  • 2018年01月27日 20:40
  • 100KB
  • 下载

信息安全技术实验二 网络扫描实验+ARP攻击

一、实验目的及要求1、 了解扫描技术的工作原理; 2、 加深对网络底层的理解; 3、 掌握常用扫描工具的基本用法; 4、 学习扫描器程序设计的基本方法。(以后再补充)二、实验环境及相关情...
  • qq_24891153
  • qq_24891153
  • 2016-10-09 17:57:23
  • 4985

主动信息收集之端口扫描

端口扫描按类型可分为TCP端口扫描和UDP端口扫描,而在TCP端口扫描中又有几种扫描方式,下面直接入正题吧~(其中的几个小脚本会在新笔记中集中写出) UDP端口扫描: 使用Nmap: n...
  • SKI_12
  • SKI_12
  • 2017-03-22 12:30:53
  • 688
收藏助手
不良信息举报
您举报文章:实验三
举报原因:
原因补充:

(最多只允许输入30个字)