1、习题 类和对象1下述程序编译有错,修改后使其能够通过编译(P84)#includeclass Stedentchar name10; int age; float aver; void printStu();void main() Sudent p1,p2,p3; p1.age=30; 2修改下述程序,使其运行结果为:(P84)Student No. is: 20021, age is: 20. #includeclass Student int ano; int age; float aver; void printStu(); void setSno(int d); void setAge
2、(int a);void printStu() cout”nStudent No. is “sno”, “; cout”age is “age”.”endl;void setSno(int s) sno=s;void setAge(int a) age=a;void main() Student lin; lin.setSno(20021); lin.setAge(20); lin.printStu(); 正确的:#includeclass Student int sno; int age; float aver; public: void printStu(); void setSno(in
3、t d); void setAge(int a);void Student:printStu() coutnStudent No. is: sno, ; coutage is: age.endl;void Student:setSno(int s) sno=s;void Student:setAge(int a) age=a;void main() Student lin; lin.setSno(20021); lin.setAge(20); lin.printStu();运行结果为:Student No. is: 20021, age is: 20. 3下述程序编译有错,修改后使其能够通过编
4、译(P84) #includeclass Point public: int x,y; Point()x=1; y=2;void main() Point cpoint,aaa; cpoint.x=2; 4下述程序编译有错,修改后使其能够通过编译(P85)#includeclass Stack public: Stack(int sz); public: char *p; int size;Stack:Stack(int sz) p=new char size=sz; void main() Stack stt;5下述程序编译有错,修改后使其运行结果为:(P134)0 Student exis
5、tplease input student No.33please input student No.882 Student exist,y=332 Student exist,y=88#include#includeclass Student private: static int x; int Sno; public: Student(); +x; coutSno; static int get_x() return x; int get_Sno() return Sno; ; int Student:x=0;void main() coutStudent:get_x()” Student
6、 existn”; Student stu1; Student *pstu=new Student; coutStudent:get_x()” Student exist,y=”get_Sno()”n”; coutStudent:get_x()” Student exist,y=”get_Sno()”n”;#include#includeclass Student private: static int x; int Sno; public: Student() +x; coutSno; static int get_x() return x; int get_Sno() return Sno
7、; ; int Student:x=0;void main() coutStudent:get_x() Student existn; Student stu1; Student *pstu=new Student; coutStudent:get_x() Student exist,y=stu1.get_Sno()endl; coutStudent:get_x() Student exist,y=(*pstu).get_Sno()n;6写出下述程序的运行结果(P137)#includeclass exampleprivate: int i; public: example(int n) i=
8、n; coutConstructingn ; example() coutDestructingn; int get_i() return i; ; int sqr_it(example o) coutsqr_itendl; return o.get_i()*o.get_i();main() example x(10); coutx.get_i()endl; coutsqr_it(x)endl; return 0;运行结果为:Constructing 10sqr_itDestructing100Destructing 继承与派生类 7不使用虚基类时:写出下述程序的运行结果(P167)#incl
9、udeclass base protected: int a; public: base() a=5; coutbase a=aendl; ;class base1: public base public: base1() a=a+10; coutbase1 a=aendl; ;class base2: public base public: base2() a=a+20; coutbase2 a=aendl; ;class derived: public base1, public base2 public: derived() cout base1:a=base1:aendl; cout
10、base2:a=base2:aendl; ;main() derived obj; return 0;运行结果为:8虚基类的使用:写出下述程序的运行结果(P169)#includeclass base protected: int a; public: base() a=5; coutbase a=aendl; ;class base1: virtual public base public: base1() a=a+10; coutbase1 a=aendl; ;class base2: virtual public base public: base2() a=a+20; coutbase
11、2 a=aendl; ;class derived: public base1, public base2 public: derived() cout derived a=aendl; ;main() derived obj; return 0;运行结果为:9含有虚基类的派生类构造函数的执行顺序:写出下述程序的运行结果(P170)#includeclass base protected: int a; public: base(int sa) a=sa; coutConstructing baseendl; ;class base1: virtual public base protecte
12、d: int b; public: base1(int sa, int sb):base(sa) b=sb; coutConstructing base1endl; ;class base2: virtual public base protected: int c; public: base2(int sa, int sc):base(sa) c=sc; coutConstructing base2endl; ;class derived: public base1, public base2 protected: int d; public: derived(int sa, int sb,
13、 int sc, int sd):base(sa),base1(sa,sb),base2(sa,sc) d=sd; coutConstructing derived endl; ;main() derived obj(2,4,6,8); return 0;运行结果为:10写出下述程序的运行结果(P183)#include#includeclass Personprotected: char *m_name; int m_age; public: Person(char *name, int age) m_name=new charstrlen(name)+1; strcpy(m_name,na
14、me); m_age=age; coutPerson Name=m_nameendl; coutPerson m_age=m_ageendl; Person() delete m_name; ; int main() Person obj(Angel,20); return 0;运行结果为:Person Name=AngelPerson m_age=20又:#include#includeclass Personprotected: char *m_name; int m_age; public: Person(char *name, int age) m_name=new charstrle
15、n(name)+1; strcpy(m_name,name); m_age=age; coutPerson Name=m_nameendl; coutPerson m_age=m_ageendl; Person() delete m_name; ; class Student:public virtual Person protected: long int m_classnu; public: Student(char *name,int age,long int classnu):Person(name,age) m_classnu=classnu; coutStudent Name=m_
16、nameendl; coutStudent m_age=m_ageendl; coutStudent classnu=m_classnuendl; Student();int main() Student obj(Angel,20,20000103); return 0;运行结果为:Person Name=AngelPerson m_age=20Student Name=AngelStudent m_age=20Student classnu=2000010311写出下述程序的运行结果(P183)#include#includeclass Personprotected: char *m_na
17、me; int m_age; public: Person(char *name, int age) m_name=new charstrlen(name)+1; strcpy(m_name,name); m_age=age; coutPerson Name=m_nameendl; Person() delete m_name; ; class Student:public virtual Person protected: long int m_classnu; public: Student(char *name,int age,long int classnu):Person(name,
18、age) m_classnu=classnu; coutStudent Name=m_nameendl; Student();class Employee:public virtual Person protected: float m_wage; public: Employee(char *name,int age,float wage):Person(name,age) m_wage=wage; coutEmployee Name=m_nameendl; Employee();class SideLine:public Student,public Employee public: Si
19、deLine(char *name,int age,long int classnu,Float wage):Person(name,age) Student(name,age,classnu),Employee(name,age,wage) coutSideLine Name=m_nameendl; SideLine();int main() SideLine obj(Angel,20,20000103,3000); return 0;此程序编译有错!Compiling.ccc.cppe:my-1jiaoxuec+c+c+讲义ltcccccc.cpp(39) : error C2629: u
20、nexpected class SideLine (e:my-1jiaoxuec+c+c+讲义ltcccccc.cpp(39) : error C2334: unexpected token(s) preceding :; skipping apparent function bodye:my-1jiaoxuec+c+c+讲义ltcccccc.cpp(45) : error C2660: SideLine:SideLine : function does not take 4 parametersError executing cl.exe.ccc.obj - 3 error(s), 0 wa
21、rning(s)修改如下:#include#includeclass Personprotected: char *m_name; int m_age; public: Person(char *name, int age) m_name=new charstrlen(name)+1; strcpy(m_name,name); m_age=age; coutPerson Name=m_nameendl; Person() delete m_name; ; class Student:public virtual Person protected: long int m_classnu; pub
22、lic: Student(char *name,int age,long int classnu):Person(name,age) m_classnu=classnu; coutStudent Name=m_nameendl; Student();class Employee:public virtual Person protected: float m_wage; public: Employee(char *name,int age,float wage):Person(name,age) m_wage=wage; coutEmployee Name=m_nameendl; Emplo
23、yee();class SideLine:public Student,public Employee public: SideLine(char *name,int age,long int classnu,float wage): Person(name,age),Student(name,age,classnu),Employee(name,age,wage) coutSideLine Name=m_nameendl; SideLine();int main() SideLine obj(Angel,20,20000103,3000); return 0;运行结果为:Person Name=AngelStudent Name=AngelEmployee Name=AngelSideLine Name=Angel
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1