当前位置:文档之家› 关于面向对象作业实例

关于面向对象作业实例


private: int pri3; }; class D2:virtual public P { public: D2(int p1,int p2,int p4):P(p1,p2) { pri4=4; } int inc1() { P::inc1(); P::inc2(); return P::inc1(); } int inc4() {return++pri4;} void display(); { P::display; cout<<"pri4="<<pri4<<endl; } private: int pri4; }; class D12:private D1,public D2 { public: D12(int p11,int p12,int p13,int p21,int D1(p11,p12,p13),D2(p21.p22.p23),P(p11,p21) { pri12=p; } int inc1() { D2::inc1();
pa->setx(2,10); pa->print(); } (2)某学校教授与讲师的月工资计算办法规定如下:教授每月工资固 定工资为4000元,讲师每月工资与讲课学时数有关,计算方法是每学时 50元,另加补助1000元。 编程显示某个教员的月工资数目。
第4次作业(1)分析下列程序,并回答提出的问题,且编程实现求子串 操作的函数Substring(&sub,*str,pos,len) (注释:初始条件:串*str存在,1<=pos<=str->Getlength()且0<=len<=str>Getlength()-pos+1操作结果:用sub返回串*str的第pos个字符起长度为 len的子串) #include<iostream.h> #include<string.h> class String() { public: String() {Length=0;Buffer=0;} String(const char *str); void Setc(int index,char newchar); char Getc(int index) const; int GetLength()const {return Length;} void Print() const { if(Buffer==0) cout<<"empty.\n"; else cout<<Buffer<<endl; } void append(comst char *Tail); ~String(){delete[]Buffer;} private: int Length; char *Buffer; }; String::String(const char *str) { Length=strlen(str); Buffer=new char[Length+1]; strcpy(Buffer,str);
int x,y; }; class B:public A { public: void print() { cout<<"x="<<x<<':'<<"x*x="<<x*x<<endl; } }; class C:public A { public: void print() { cout<<"x="<<x<<':'<<"x*x*x="<<x*x*x<<endl; } }; class D:public A { public: void print() { cout<<"x="<<x<<','<<"y="<<y<<':'; cout<<"pow(x,y)="<<pow(double(x),double(y))<<endl; } }; void main() { A *pa; B b; C c; D d; pa=&b; pa->setx(5); pa->print(); pa=&c; pa->setx(8); pa->print(); pa=&d;
{ }; 设有 C *pc; (1) pc->a=1;是否有二义性? (2) pc->b();是否有二义性? (3) pc->f();是否有二义性? (4) pc->f(10); 是否有二义性? (5) pc->g();是否有二义性? //提示:二义性检查时在访问控制权限或类型检查之前进行的。 (2)写出运行结果 #include<iostream.h> class P { public: P(int p1,int p2){pri1=p1;pri2=p2;} int inc1(){return++pri1;} int inc2(){return++pri2;} void display(){cout<<"pri1="<<pri1<<",pri2="<<pri2<<endl;} private: int pri1,pri2; }; class D1:virtual private P { public: D1(int p1,int p2,int p3):P(p1,p2) { pri3=p3; } int inc1() {return P::inc1();} int inc3() {return++pri3;} void display() { P::display;(); cout<<pri3="<<pri3<<endl; }
} void String::Setc(int index,char newchar) { if(index>0&&index<=Length) Buffer[index-1]=newchar; }
char String::Getc(int index) const { if(index>0&&index<=Length) return Buffer[index-1]; else return 0; } void String::Append(const char*Tail) { char *tmp; Length+=strlen(Tail); tmp=new char[Length+1]; strcpy(tmp,Buffer); strcat(tmp,Tail); delete[]Buffer; Buffer=tmp; } void main() { String s0,s1("a string."); s0.Print(); s1.Print(); cout<<s1.GetLength()<<endl; s1.Setc(5,'p'); s1.Print(); cout<<s1.Getc;this"); s2.Append("a string."); s2.Print(); } (1) 该程序调用了哪些在string.h中包含的函数? (2) 该程序的String类中是否用了函数的重载的方法?哪些函数 是重载的? (3) 简述Setc()函数有何功能? (4) 简述Getc()函数有何功能? (5) 简述Append()函数有何功能? (6) 该程序的成员函数Print()中不用if语句,只写成如下一条语 句,行否?cout<<Buffer<<endl; (7) 该程序中有几处使用了new运算符? (8) 写出该程序执行后的输出结果。 第5次作业 (1)根据下面给定的继承结构,回答问题。 class A { public: int a; int b(); int f(); int f(int); int g(); }; class B { public: char f(); int g(); private: int a; int b(); }; class C:public A,public B
p22,int
p23,int
p):
return D2::inc1(); } int inc5(){return++pri12;} void display() { cout<<"D2::display()\n"; D2::display(); cout<<"pri12="<<pri12<<endl; } private: int pri12; }; void main() { D12 d(1,2,3,4,5,6,7); d.display(); cout<<endl; d.inc1(); d.inc4(); d.inc5(); d.D12::inc1(); d.display(); } 第6次作业 (1)下面是一个具有纯虚函数和抽象类的程序。分析下列程序的输出 结果。程序内容如下所示。 #include<iostream.h> #include<math.h> class A { public: virtual void setx(int i,int j=0) {x=i;y=j;} virtual void print()=0; protected:
相关主题