台 州 外 围 - 台 州 的 外 围 资 源

  台 州 外 围 - 台 州 的 外 围 资 源 -薇芯【81343628】【81343628】【高端外围资源】【诚信合作,非诚勿扰!】可直接添加 !区分内部可见(成员函数对数据成员的访问)和外部可见(对象对成员的访问)
  1)public:内部和外部皆可见
  2)private:内部可见,外部不可见
  3)protected:内部可见,继承类的内部可见,外部不可见
  继承属性:
  public类型的继承:在子类中,原来public,protected,private等依旧为public,protected,private
  protect类型的继承:在子类中,原来public,protected,private等变为protected,protected,不可见
  private类型的继承:在子类中,原来public,protected,private等变为private,private,不可见
  台 州 外 围 - 台 州 的 外 围 资 源 -薇芯【81343628】【81343628】【高端外围资源】【诚信合作,非诚勿扰!】可直接添加 !结合访问属性和继承属性,就可以推导处各种情况下的访问权限问题。其中private只能在父类内部调用,对于其他都是不可见的。
  2,继承的二义性
  1)一个指向基类的指针可以指向该类的任何派生类对象,这是c++实现多态的关键
  2)可以把基类的指针/引用强制转换为派生类的指针/引用,这再java里面是不容许的,但再c++里面,利用该指针再调用子类具有,基类没有的属性的时候,居然不报错,实在很神奇。
  3,虚函数与多态
  c++中的虚函数可以被对象正常调用,纯虚函数才类似于java里的抽象函数。一旦基类声明虚函数,那么不管子类有没有virtual,都为虚函数。
  多态是指同一个操作作用于不同的对象会产生不同的相应,分为静态多态和动态多态。
  静态多态发生在编译阶段,如函数重载。(通过不同对象调用对应函数本质上不叫多态)
  动态多态发生在运行阶段,通过虚函数和指针/引用来实现。
  (使用指针访问非虚函数时候,编译器根据指针本身类型决定调用哪个函数;使用指针访问虚函数的时候,编译器根据指针指向的对象类型决定调用哪个函数)。因此:实现动态多态需要满足两个条件:
  1)成员函数声明为虚函数
  2)使用指向基类类型的指针或者引用进行函数调用
  4,c++类的内存布局
  1)对于一个类来说,类里面的static数据成员存放在所有对象之外,非static成员被配置到每个对象。不会对对象占用的内存造成影响。
  2)台 州 外 围 - 台 州 的 外 围 资 源 -薇芯【81343628】【81343628】【高端外围资源】【诚信合作,非诚勿扰!】可直接添加 !类里面的成员函数也放置在所有对象之外,如果类包含虚函数,那么编译系统给每一个对象一个虚函数指针(ptr),指向每个对象自己的虚函数表。虚函数表中记载的是对应需要调用函数的入口地址。

猜你喜欢

转载自www.cnblogs.com/zhaojun-20002003/p/12784158.html