程序设计实习第二十一讲习题课.ppt
《程序设计实习第二十一讲习题课.ppt》由会员分享,可在线阅读,更多相关《程序设计实习第二十一讲习题课.ppt(57页珍藏版)》请在三一办公上搜索。
1、程序设计实习第二十一讲 习题课,类和对象基本概念(1),写出下面程序的运行结果 class Apple private:static int nTotalNumber;public:Apple()nTotalNumber+;Apple()nTotalNumber-;static void PrintTotal()cout nTotalNumber endl;int Apple:nTotalNumber=0;Apple Fun(const Apple,解析:return返回时,产生临时变量,Total Number析构时会减小 41,类和对象基本概念(2),*写出下面程序的运行结果 class
2、Samplepublic:int v;Sample();Sample(int n):v(n);Sample(Sample,解析:构造函数和复制构造函数的调用9225注意区分:Sample b=a;d=a;,类和对象基本概念(3),程序输出结果如下,请填空05class A public:int val;A(_)val=n;_ GetObj()return _;main()A a;cout a.val endl;a.GetObj()=5;cout a.val endl;,A(int n=0)A,类和对象基本概念(4),程序输出结果如下,请填空3+4i 5+6i补足Complex类的成员函数,不能
3、增加成员变量class Complex private:double r,i;public:void Print()cout r+i i endl;int main()Complex a;a=3+4i;a.Print();a=5+6i;a.Print();,类和对象基本概念(4),构造函数Complex();Complex(const char t)if(!t)r=0.0;i=0.0;else r=t0-0;i=t2-0;,另一种思路重载赋值操作符Complex,类和对象基本概念(5),程序输出结果如下,请填空10补足Sample类的成员函数,不能增加成员变量class Samplepubli
4、c:int v;Sample(int n):v(n);main()Sample a(5);Sample b=a;cout b.v;,Sample(Sample,类和对象基本概念(6),程序输出结果如下,请填空ThisHello补足MyString类的成员函数,不能增加成员变量class MyStringchar*p;public:MyString(char*s)p=new charstrlen(s)+1;strcpy(p,s);MyString()delete p;const char*c_str()return p;,main()MyString s1(This),s2=s1;s2.Copy
5、(Hello);cout s1.c_str()endl s2.c_str();,类和对象基本概念(6),补足成员函数void Copy(char*s)delete p;p=new charstrlen(s)+1;strcpy(p,s);MyString(MyString,类和对象基本概念(7),程序输出结果如下,请填空5,55,5class Base public:int k;Base(int n):k(n);class Bigpublic:int v;Base b;Big _ Big _;,main()Big a1(5);Big a2=a1;cout a1.v,a1.b.k endl;cou
6、t a2.v,a2.b.k endl;,Big(int n):v(n),b(n)Big(Big&x):v(x.v),b(x.b.k),运算符重载(1),程序输出结果如下,请填空4,1请写出被隐藏的部分,MyInt的成员函数里不允许使用静态变量class MyIntint nVal;public:MyInt(int n)nVal=n;int ReturnVal()return nVal;.;,main()MyInt objInt(10);objInt-2-1-3;cout objInt.ReturnVal();cout,;objInt-2-1;cout objInt.ReturnVal();,M
7、yInt,运算符重载(2),*程序输出结果如下,请填空(4,5)(7,8)class Point private:int x;int y;public:Point(int x_,int y_):x(x_),y(y_);_;_ operator(_,const Point,main()cout Point(4,5)Point(7,8);,运算符重载(2),class Point private:int x;int y;public:Point(int x_,int y_):x(x_),y(y_);_;_ operator(_,const Point,friend ostream,ostream&
8、operator(ostream&o,const Point&p),o(p.x,p.y)endl;,o,运算符重载(3),*程序输出结果如下,写一个二维数组类 Array20,1,2,3,4,5,6,7,8,9,10,11next0,1,2,3,4,5,6,7,8,9,10,11,运算符重载(3),using std:cout;using std:endl;int main()Array2 a(3,4);int i,j;for(i=0;i 3;i+)for(j=0;j 4;j+)aij=i*4+j;for(i=0;i 3;i+)for(j=0;j 4;j+)cout a(i,j),;cout
9、endl;,cout next endl;Array2 b;b=a;for(i=0;i 3;i+)for(j=0;j 4;j+)cout bij,;cout endl;return 0;,运算符重载(3),class Array2 private:int*p;int r,c;public:Array2()p=NULL;Array2(int r_,int c_):r(r_),c(c_)p=new int r*c;Array2(Array2,Array2,注:重载的实际上是第二维的,第一维的直接调用int型一维数组的定义,运算符重载(3):第二种解法,class CWordArrprivate:i
10、nt*m_pdat;long m_size;public:CWordArr(long size)m_pdat=new intsize;m_size=size;CWordArr()delete m_pdat;int,运算符重载(3):第二种解法,class Array2private:CWordArr*m_p;long m_col,m_row;public:Array2(long col,long row)m_p=new CWordArr*col;for(long i=0;icol;i+)m_pi=new CWordArr(row);m_col=col;m_row=row;,Array2()fo
11、r(long i=0;im_col;i+)delete m_pi;m_pi=NULL;delete m_p;CWordArr,通过两次重载的叠加,就可以用axy的方式来访问数组元素C+不可能在一个类里面实现的重载(若这种相当于三元算符),因此有两个类:一个是一维数组类,实现的重载;另一个类是二维数组类,必须持有一组一维数组类的实例,存放二维数组的各个行的数组,二维数组类也要重载运算符,运算符重载(4),程序输出结果如下,写一个HugeInt类 3)100004)100005)100016)10006,运算符重载(4),void main()CHugeInt d(9999);cout 1)tem
12、p endl;cout 2)temp2 endl;cout 3)+d endl;cout 4)d+endl;cout 5)d endl;d+=5;cout 6)d endl;cout 7)d+temp;,运算符重载(4),代码过多,只截取部分,/重载运算符+CHugeInt operator+(const CHugeInt,const CHugeInt,运算符重载(4),friend ostream,继承和多态(1),程序输出结果如下,写一个Mystring类1.abcd-efgh-abcd-2.abcd-3.4.abcd-efgh-5.efgh-6.c7.abcd-8.ijAl-9.ijAl
13、-mnop10.qrst-abcd-11.abcd-qrst-abcd-uvw xyz,aboutbigmetakeabcdqrst-abcd-,Mystring类(1),#include#includeusing namespace std;class MyStringpublic:char*p;MyString()/构造函数 p=NULL;MyString(char*t)/构造函数 p=new charstrlen(t)+1;strcpy(p,t);MyString(const MyString,Mystring类(2),MyString()/析构函数 if(p)deletep;MyStr
14、ing operator+(const MyString,Mystring类(3),MyString operator+(const char*s)/+号重载,这里表示/MyString类型+字符串的情形 char*q;q=new charstrlen(p)+strlen(s)+1;strcpy(q,p);strcat(q,s);MyString temp(q);delete q;return temp;MyString 0,Mystring类(4),char,Mystring类(5),MyString operator()(int i,int n)/()重载 char*q;q=new cha
15、rn+1;strncpy(q,p+i,n);qn=0;MyString temp(q);delete q;return temp;ostream,Mystring类(6),int operator 号的重载 if(strcmp(s1.p,s2.p)(const MyString,Mystring类(7),int CompareString(const void*e1,const void*e2)/字符串比较函数 MyString*s1=(MyString*)e1;MyString*s2=(MyString*)e2;if(*s1*s2)return 0;else return 1;,Mystri
16、ng类(8),从string类派生的写法class MyString:public stringpublic:MyString():string();MyString(const char*s):string(s);MyString(const string,继承和多态(2),写出下面程序的运行结果,class B private:int nBVal;public:void Print()cout nBVal=nBVal endl;void Fun()cout B:Fun endl;B(int n)nBVal=n;,class D:public B private:int nDVal;publ
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 实习 第二十一 习题
链接地址:https://www.31ppt.com/p-6393171.html