两道关于c++类的问题,有讲解最好了,谢谢了,新年快乐
三、阅读以下程序并给出执行结果(10分)
2.(3分)
#include <iostream>
using namespace std;
class Tc
{
int v1,v2;
public:
Tc(int x=0,int y=0):v1(x),v2(y)
{cout <<"This is a constructor!v1+v2="<<v1+v2<<endl;}
~Tc() {cout<<"This is a destructor!"<<endl;}
};
void main()
{
Tc x,y(10,20),z(y);
}
输出:?
3.(4分)
#include <iostream>
using namespace std;
class Bclass
{public:
Bclass(int i, int j)
{x=i;y=j;}
virtual int fun(){return 0;}
protected:
int x,y;
};
class Iclass:public Bclass
{public:
Iclass(int i,int j,int k):Bclass(i,j)
{z=k;}
int fun(){return(x+y+z)/3;}
private:
int z;
};
void main()
{ Iclass obj(2,4,10);
Bclass p1=obj;
cout<<p1.fun()<<endl;
Bclass & p2=obj;
cout<<p2.fun()<<endl;
cout <<p2.Bclass::fun()<<endl;
Bclass *p3=&obj;
cout<<p3->fun()<<endl;
}
输出:?
[解决办法]
第一个输出结果:
This is a constructor!v1+v2=0
This is a constructor!v1+v2=30
This is a destructor!
This is a destructor!
This is a destructor!
Tc x,y(10,20) 调用了构造函数
z(y)没有适合的调用
运行结束都调用析构
第二个输出结果:
0
5
0
5
p1.fun() 调用基类徐海虚函数
p2.fun() 指向的是Iclass中的fun