面向对象程序设计(C++)习题9-答案.docVIP

面向对象程序设计(C++)习题9-答案.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
8.2 指出如下各类可访问的成员及成员的访问权限。 class A{ int a; protected: int b, c; public: int d, e; ~A( ); }; class C: A{ int a; protected: int b, f; public: int e, g; A::d; }; 类A可访问成员及访问权限: private: int a; protected: int b, c; public: int d, e; ~A( ); 类C可访问成员及访问权限: private: int A::b, ca; ~A( ); protected: int b, f; public: int A::d , e, g; 8.3 指出如下程序中main 的每行语句的输出结果。 #include iostream.h struct A{A( ) { coutA;}}; struct B{B( ) { coutB;}}; struct C: A{C( ) { coutC;}}; struct D: A, B{D( ) { coutD;}}; struct E: A, B, virtual C{ D d; E( ) { coutE;} }; struct F: A, virtual B, virtual C, D, E{ C c, d; E e; F( ) { coutF;} }; void main(void) { A a; cout\n; //输出A B b; cout\n; //输出B C c; cout\n; //输出AC D d; cout\n; //输出ABD E e; cout\n; //输出ACABABDE F f; cout\n; //输出BACAABDABABDEACACACABABDEF } 9.1 指出以下程序中的语法错误及其原因class A{ static const int a; int b; protected: int c, d; int A(int); // 构造函数没有返回类型,不能返回 int public: int e, f; const int g=7; // 不能对g 初始化,只读变量只能在构造函数的函数头后面用冒号隔开初始化 A operator=(A ); } a={1, 2, 3}; // 因类 A有私有成员或构造函数, 必须使用构造函数初始化 class B: protected A{ int b; protected: A::a; // 是私有的, 不能出现在 protected 下面 B(int); int operator ?: (int, int); // ?:不能重载?:运算符 public: static B(int, int); // 不能出现 static int operator int( ); // 类型转换重载函数不能有返回类型 operator A( ); B(int, int, int); } b(5); // 无法用私有的构造函数B(int)初始化, 全局变量只能有公有构造函数初始化 void main( void) { int x; int y=x; int *z=y; // 不能定义指向引用类型的指针,引用类型的变量理论上不分配内存, 此外 初始化表达式的类型也不匹配 int A::*p=A::b; // 不能访问私有的成员 A::b int *q=A::e; // A::e 的类型为 int A::*, 不能转换为 int * int A::**r; x=b.b; // B::b 是 main 不可访问的成员 x=b.f; // A::f 是 main 不可访问的成员 y=x+a; // 没有相应的运算符重载函数, 也没有将类 A的对象转换为 int 的函数 y=B(6); // B(6)要构造一个常量对象, 但保护的构造函数 B(int)是不能被 main 访问的 a=B(3, 4, 5); // B类没有类型转换转换常量对象 B(3, 4, 5) 为 A类对象, A类也没有相应赋值运算 符函数 A::operator =(B)重载? 不能实现类型转换后赋值或不同类型直接赋值 r=q; // q 的类型为 int **, 不能转换为和r 同样的 int A::**类型 a.*q=6; // q 不是普通成员指针类型 *(a.*r)=9; // r 是一个指向普通成员指针的普通指针, 而不是普通成员指针 } 9.2 指出main的变量i 在每条语句执行后的值。 int x=7;int y=::x+5; struct A{ int x; static int y; public: A operator +=(A );

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档