龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C++习题与解析(类和对象-01)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
题 1.分析以下程序执行的结果 #include #include class Sample { public: int x,y; Sample(){x=y=0;} Sample(int a,int b){x=a;y=b;} void disp() { cout } }; void main() { Sample s1(2,3); s1.disp(); } 解:本题说明了重载构造函数

  

题 1.分析以下程序执行的结果

  

#include

  

#include

  

  

class Sample

  

{

  

public:

  

int x,y;

  

Sample(){x=y=0;}

  

Sample(int a,int b){x=a;y=b;}

  

void disp()

  

{

  

cout<<"x="<

  

}

  

};

  

  

void main()

  

{

  

Sample s1(2,3);

  

s1.disp();

  

}

  

  

解:本题说明了重载构造函数的定义方法。首先定义了一个类Sample,在main()中定义了它的一个对象,定义s1对象时调用其重载构造函数(x=2,y=3),然后,调用其成员函数输出数据成员。所以输出为:x=2,y=3。

  

注重:构造函数是唯一不能被显式调用的成员函数,它在定义类的对象时自动调用,也称为隐式调用。

--------------------------------------------------------

题 2.分析以下程序的执行结果

  

#include

  

class Sample

  

{

  

int x,y;

  

public:

  

Sample(){x=y=0;}

  

Sample(int a,int b){x=a;y=b;}

  

~Sample()

  

{

  

if(x==y)

  

cout<<"x=y"<

  

else

  

cout<<"x!=y"<

  

}

  

void disp()

  

{

  

cout<<"x="<

  

}

  

};

  

  

void main()

  

{

  

Sample s1(2,3);

  

s1.disp();

  

}

  

  

解:本题说明了析构函数的定义方法。首先定义了一个类Sample,在main()中定义了它的一个对象,定义s1对象时调用其重载构造函数(x=2,y=3),然后,调用其成员函数输出数据成员,最后在退出程序时自动调用析构函数。所以输出为:

  

x=2,y=3

  

x!=y

  

  

注重:析构函数在对象的作用域结束时被自动隐式调用。

----------------------------------------------------

题 3.分析以下程序的输出结果

  

#include

  

class Sample

  

{

  

int x;

  

public:

  

Sample(int a)

  

{

  

x=a;

  

cout<<"constrUCting object:x="<

  

}

  

};

  

  

void func(int n)

  

{

  

static Sample obj(n);

  

}

  

  

void main()

  

{

  

func(1);

  

func(10);

  

}

  

  

解:本题说明静态对象构造函数的调用情况,由于在func()函数中定义的对象obj是静态对象,故只被构造一次,所以输出为:

  

counstructing object:x=1

  

  

注重:静态对象和静态变量一样,只被构造一次。块作用域的静态变量,在首次进入到定义该静态对象的函数时,构造该静态对象,以后进入该函数时不再构造静态对象。

------------------------------------------------------

题 1.4 分析以下程序的执行结果

  

#include

  

class Sample

  

{

  

int x,y;

  

public:

  

Sample(){x=y=0;}

  

Sample(int a,int b){x=a;y=b;}

  

void disp()

  

{

  

cout<<"x="<

  

}

  

};

  

  

void main()

  

{

  

Sample s(2,3), *p=&s;

  

  

p->disp();

  

}

  

  

解:本题说明了对象指针的使用方法。这里通过指向对象的指针来调用对象的成员函数。对象指针p指向对象s,p->disp()等价于s.disp()。所以输出为: x=2,y=3.

  

  

收藏文章
表情删除后不可恢复,是否删除
取消
确定
图片正在上传,请稍后...
评论内容为空!
还没有评论,快来抢沙发吧!

热评话题

按钮 内容不能为空!
立刻说两句吧! 查看0条评论
精彩图集

赞助商链接