CString c5=c2;
cout<<\ cout< cout<<\以下是对串的比较******************\ int temp=c2.compare(c3); cout<<\以下比较c2与c3\ if(temp>0) cout<<\ else if(temp<0) cout<<\ else cout<<\cout< cout<<\以下比较c2与任意字符串Goodboy!\ if(c2.compare(\ cout<<\ else if(c2.compare(\ cout<<\ else cout<<\ } 第二章 继承和派生 一、选择题 1.D 2.B 3. D 一、阅读程序题 四、编程题 4.1 #include class Circle { public: Circle(){r=0;} Circle (double d){r=d;} double area(){return(PAI*r*r);} void display1(){cout<<\桌子的面积:\private: double r; }; class Table { public: Table(){heig=0;} Table (double h) {heig=h;} void display2(){cout<<\桌子的高度:\private: double heig; }; class Roundtable : public Circle,public Table { public: Roundtable(){strcpy(color,\白色\ Roundtable(double a,double b,char* c):Circle(a),Table(b){strcpy(color,c);} void display () { display1(); display2(); cout<<\桌子的颜色:\private: char color[20]; }; void main() { Roundtable s(2.0,3.0,\黑色\s.display(); } 4.2 如果Age在基类中被定义为私有的,SetAge(int n)不能直接给Age赋值,如果Age是基类的公有成员变量,则可以直接赋值。 class Animal { public: Animal(){}; int Age; }; class Dog:public Animal { public: Dog(){}; Void SetAge(int n) { Age=n; } }; 4.3 #include public: Rectangle (double l,double w){length=l,width=w} double area(){return length*width;} void display1(); private: double length; double width; }; void Rectangle::display1() {cout<<\长:\ cout<<\宽:\class Cuboid:public Rectangle { public: Cuboid (double L,double w,double h):Rectangle(L,w){high=h,volume=L*w*high }; double vol(){return area()*high;} void show (); private: double high; double volume; }; void Cuboid::show() { display1(); cout<<\高:\cout<<\体积:\} void main() { Cuboid cub (10,20,30); cub.show(); } 4.4 #include public: Vehicle():maxspeed(0),weight(0){} Vehicle(double m,double w):maxspeed(m),weight(w){}; void run () { cout<<\ 可以奔跑\void stop () { cout<<\ 可以停止奔跑\private: double maxspeed; double weight; }; class Bicycle:virtual public Vehicle { public: Bicycle (double m,double w,double h):Vehicle(m,w),height(h){} private: double height; }; class Motorcar : virtual public Vehicle { public: Motorcar (double m,double w,double s):Vehicle(m,w),setnum(s){} private: double setnum; }; class Motorcycle:public Bicycle,public Motorcar { public: Motorcycle(double m,double w,double h,double s):Bicycle(m,w,h),Motorcar(m,w,s), Vehicle(m,w){} }; void main() { Motorcycle s1(300,10,6,30); s1.run(); s1.stop(); } 如果不把Vehicle设置为虚基类,会产生二义性问题。 第3章 多态性 3.1 简答题 3.1.1 哪些运算符可以重载? 几乎所有的运算符都可以重载,除了以下的几个运算符: ., ::,?: 3.1.2 运算符重载后,优先级和结合性如何? 用户重新定义运算符,不改变原运算符的的优先级和结合性。同时运算符重载后,也不改变运算符的语法结构,即单目运算符只能重载为单目运算符,双目运算符只能重载为双目运算符。 3.1.3 编译程序如何选用运算符函数? 在每一种编译系统中,运算符实际上都对应一个函数,只是这种运算对用户具有透明性,使用者并不知道函数的存在。运算符重载实际上是运算符函数的重载,所以运算符的重载实际上是函数的重载。 编译程序对运算符重载的选择,遵循着函数重载的选择原则。当遇到不很明显的运算符时,编译程序将去寻找参数相匹配的运算符函数。 3.1.4 重载运算符有哪些限制? (1)不可臆造新的运算符 (2)坚持四个不能改变。 ? 不能改变运算符原有的优先级 ? 不能改变运算符原有的结合性 ? 不能改变运算符原有的语法结构 ? 不能改变运算符原有的操作数个数 但允许改变 运算符的返回类型 (3)C++规定,运算符中,参数类型都是内部类型时,不允许重载。 “::、*、->、?:”这五个运算符不能重载。 3.1.5 运算符重载必须遵循哪些原则? 运算符重载可以使程序更加简洁,使表达式更加直观,增强可读性。但是,运算符重载使用不宜过多,否则会带来一定的麻烦。 运算符重载必须遵循以下原则: (1)重载运算符含义必须清楚。 (2)重载运算符不能有二义性。 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库C++程序设计教程--面向对象分册(郑秋生)答案(3)在线全文阅读。
相关推荐: