面向对象技术(C++ Primer)第12章.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象技术(CPrimer)第12章

抑制由构造函数定义的隐式转换 51 Class Sales_item{ public: //default argument for book is the empty string explicit Sales_item(const std::string book):isbn(book), units_sold(0), revenue(0.0){} Explicit Sales_item(std::istream is); } Item.same_isbn(null_book); //error, strng constructor is explicit Item.same_isbn(cin); //eror,istream constructor is explicit 为转换而显式使用构造函数 52 String null_book=“9-999-99999-9”; //ok, builds a sales_item with 0 units_sold and revenue from and isbn equal to null_book. Item.same_isbn(Sales_item(null_book)); 类成员的显式初始化 53 struct Data{ int ival; char *ptr; } Data val1={0,0}; //ok Data val2={1024, “Anna Livia Plurabelle”}; Data val2={“Anna Livia ”,1024}; //error 显式初始化的缺点: 1.要求类的全体数据成员是public, 违返了封装原则。 2.将初始化每个对象的每个成员的负担放在程序员身上,初始化易出错。因为容易遗忘或者提供不适当的初始化式 3.如果增加或删除一个成员,必须找到所有的初始化并正确更新。 友元 54 友元机制允许一个类将对其非公有成员的访问权授予指定的函数或类。Friend Class Screen{ friend class Window-Mgr; //Window_Mgr member can access private parts of class screen //…rest of the screen class } 55 Window_Mgr Window_Mgr::relocate(Screen::index r, Screen::index c, Screen s) { //ok to refer to height and width s.height +=r; s.width+=c; return *this; } 使其他类的成员函数成为友元 56 Class Screen{ //window_Mgr must be defined before class screen friend Window_Mgr Window_Mgr::relocate(Window_Mgr::index,Window_Mgr::index,Screen); } 友元声明与作用域 57 Class x{ friend class Y; friend void f(){/*ok to define friend function in the class body*/} } Class Z{ Y *ymem; //ok,declaration for class Y introduced by friend in X void g(){return ::f();} //ok, declaration of f introduced by x }; 重载函数与友元关系 58 类必须将重载函数集中每一个希望设为友元的函数都声明为友元。 Extern std::ostream storeOn(std::ostream , Screen ); Extern BitMap storeOn(BitMap , Screen ); Class Screen{ //ostream version of storeOn may access private parts of Screen objects friend std::ostream storeOn(std::ostream , Screen ); } Static类成员 59 使用类的static成员而非全局变量的优点 1.

文档评论(0)

cj80011 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档