3. 类和对象(2)学习 文档 参考.ppt

  1. 1、本文档共138页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 封闭类的复制构造函数(P198) 封闭类的对象,如果是用默认复制构造函数初始化的,那么它里面包含的成员对象,也会用复制构造函数初始化。 class A { public: A() { cout default endl; } A(A a) { cout copy endl;} }; class B { A a; }; int main() { B b1,b2(b1); return 0; } 输出: default Copy 说明b2.a是用类A的复制构造函数初始化的。而且调用复制构造函数时的实参就是b1.a。 信息科学技术学院《程序设计实习》 郭炜 * 以下说法正确的是: A) 成员对象都是用无参构造函数初始化的 B) 封闭类中成员对象的构造函数先于封闭类的构造函数被调用 C) 封闭类中成员对象的析构函数先于封闭类的析构函数被调用 D) 若封闭类有多个成员对象,则它们的初始化顺序取决于封闭类构造函数中的成员初始化列表 信息科学技术学院《程序设计实习》 郭炜 * 以下关于赋值运算符重载的说法,正确的是: 赋值运算符重载成全局函数时,应该有两个参数 B) 赋值运算符重载的唯一目的就是使得可以用其他类型的变量或常量给对象复制 C) 赋值运算符重载时,返回值设为其所作用的对象的引用,是符合赋值运算符使用习惯的做法 D) 赋值运算符重载时,返回值设为void是符合赋值运算符使用习惯的做法 信息科学技术学院《程序设计实习》 郭炜 * 答案:C 以下关于赋值运算符重载的说法,正确的是: 赋值运算符重载成全局函数时,应该有两个参数 B) 赋值运算符重载的唯一目的就是使得可以用其他类型的变量或常量给对象复制 C) 赋值运算符重载时,返回值设为其所作用的对象的引用,是符合赋值运算符使用习惯的做法 D) 赋值运算符重载时,返回值设为void是符合赋值运算符使用习惯的做法 友元 信息科学技术学院《程序设计实习》 郭炜 美国马蹄湾 友元分为友元函数和友元类两种 1) 友元函数: 一个类的友元函数可以访问该类的私有成员. class CCar ; //提前声明 CCar类,以便后面的CDriver类使用 class CDriver { public: void ModifyCar( CCar * pCar) ; //改装汽车 }; class CCar { private: int price; friend int MostExpensiveCar( CCar cars[], int total); //声明友元 friend void CDriver::ModifyCar(CCar * pCar); //声明友元 }; 友元(friends,P199) void CDriver::ModifyCar( CCar * pCar) { pCar-price += 1000; //汽车改装后价值增加 } int MostExpensiveCar( CCar cars[],int total) //求最贵汽车的价格 { int tmpMax = -1; for( int i = 0;i total; ++i ) if( cars[i].price tmpMax) tmpMax = cars[i].price; return tmpMax; } int main() { return 0; } 可以将一个类的成员函数(包括构造、析构函数)说明为另一个类的友元。 class B { public: void function(); }; class A { friend void B::function(); }; 2)友元类: 如果A是B的友元类,那么A的成员函数可以访问B的私有成员。 class CCar { private: int price; friend class CDriver; //声明CDriver为友元类 }; class CDriver { public: CCar myCar; void ModifyCar() {//改装汽车 myCar.price += 1000;//因CDriver是CCar的友元类, //故此处可以访问其私有成员

文档评论(0)

文人教参 + 关注
实名认证
内容提供者

老师教学,学生学习备考课程、成人语言培训课程及教材等为提升学生终身学习竞争力,塑造学生综合能力素质,赋能学生而努力

版权声明书
用户编号:6103150140000005

1亿VIP精品文档

相关文档