c++类的讲解.pptVIP

  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文档。上传文档
查看更多
在类体中定义的成员函数的规模一般都很小,而系统调用函数的过程所花费的时间开销相对是比较大的。调用一个函数的时间开销远远大于小规模函数体中全部语句的执行时间。为了减少时间开销,如果在类体中定义的成员函数中不包括循环等控制结构,C++系统会自动将它们作为内置(inline)函数来处理。 注意:以下情况慎用内联函数: (1)如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。 (2)如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大 要声明一个const类型的类成员函数,只需要在成员函数参数列表后加上关键字const, 在类体之外定义const成员函数时,还必须加上const关键字。若将成员成员函数声明为const,则该函数不允许修改类的数据成员 合成的默认构造函数 合成的默认构造函数初始化数据成员的原则是初始化变量的原则,即:类类型的数据成员通过调用其相应类的默认构造函数初始化,内置和复合类型的数据成员根据其定义的位置决定,在全局作用于定义的对象时才进行初始化,在局部作用于中定义的对象不作初始化,因此我们可以看到,当你的数据成员中含有内置类型或者复合类型时,最好自己定义一个默认构造函数,不要依靠编译器合成,那样会带来不必要的麻烦和限制了类的应用。自己定义的一个默认构造函数对内置类型和复合类型数据成员做初始化。还要注意,如果你定义了一个构造函数,不管是普通的还是默认的构造函数,编译器都不会在为你合成默认构造函数了。 C++类构造函数初始化列表 隐式类类型转换 隐含的this指针 1. this指针是一个隐含于每一个成员函数中的特殊指针。它指向正在被该成员函数操作的那个对象。 2. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。 3. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。 4. 在C++中,this指针被隐含地声明为: X *const this,这意味着不能给this 指针赋值; 在X类的const成员函数中,this指针的类型为:const X* const, 这说明this指针所指向的这种对象是不可修改的(即不能对这种对象的数据成员进行赋值操作); 5. 由于this并不是一个常规变量,所以,不能取得this的地址。 隐含的this指针 1.何时使用this 必须显式使用this指针:当需要将一个对象作为整体引用而不是引用对象一个成员时。 myScreen.move(4, 0).set(#); //等价于 myScreen.move(4, 0); myScreen.set(#); 友元函数 class Point   {   public:    Point(double xx, double yy) { x=xx; y=yy; }     void Getxy();     friend double Distance(Point a, Point b);   private:     double x, y;   }; 友元类 class A { … public: friend class B; … }; 友元注意事项: 1.友元可以访问类的私有成员。 2.只能出现在类定义内部,友元声明可以在类中的任何地方,一般放在类定义的开始或结尾。 3.友元可以是普通的非成员函数,或前面定义的其他类的成员函数,或整个类。 4.类必须将重载函数集中每一个希望设为友元的函数都声明为友元。 5.友元关系不能继承,基类的友元对派生类的成员没有特殊的访问权限。如果基类被授予友元关系,则只有基类具有特殊的访问权限。该基类的派生类不能访问授予友元关系的类。 static 类成员 C++primer里面讲过:static成员它不像普通的数据成员,static数据成员独立于该类的任意对象而存在,每个static数据成员是与类关联的对象,并不与该类的对象相关联! static静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。 #include iostream #include string using namespace std; class Person { private: string name; static int age; public: Person(const

文档评论(0)

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

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

1亿VIP精品文档

相关文档