c++类的基础记录

 

1 virtual的目的是启用动态绑定。除了构造函数数之外, 任意非static成员函数都可以虚函数。Virtual只在类的成员函数声明中出现, 不能用在类定义体外部出现的函数定义上。

2 public 成员能访问 ,private 不能访问,只能由本类的成员和友元访问。

 protected private 成员一样, protected成员不能被类的用户访问。

public成员一样, protected 成员可被类的派生类访问。

3类派生列表 指定基类。基类可以是一个或多个类。

派生类一般要重定义所继承的虚函数。

派生类对象包含基类对象作为子对象。 

派生类本身定义的(非static)成员加上由基类(非static)成员子对象。

派生类中的函数可以使用基类的成员。

派生类可以访问基类的public protrcted 成员,好象自己的成员一样。

派生类本身可以做为基类。

派生类的声明包含类名但不包派生列表。

例如:

//error d forward declaration must not include the derivation list

class Bulk_item public Item_base;

//forwaed declarations of bath derived and nonderied class.

class Bulk_item;

class Item_base;

 

6 从派生类到基类的转换。可以使用一个派生类型的对象的地址或引用对基类类型的指针或引用进行赋值或初始化。但是严格的说,派生类型对象,并没有转换为基类类型对象。

7 继承级别 基类本身指定对自身成员的最小访问控制。如果成员在本类中为private 则顺有基类和基类的友元可以访问该成员。派生类不能访问基类的private成员,也不能使用自己的用户能够访问那些成员。 如果基类成员为publicprotected, 则派生中使用的访问标号决定该成员在派生类中的访问级别。

  公用继承 基类成员保持自己的访问级别。基类的public 成员为派生类的publicpublic成员,基类的protected成员为派生类的protected成员。

  受保护继承 基类的public 和 protected成员在在派生类中为protected成员。

  私有继承  基类的所有成员在精兵简政类中为private成员。

 

8 去除个别成员 派生类可以恢复继承成员的访问级别, 但不能使访问级别比基类中原来指定的的更严格或更宽松。

例如:

  class Derived : private Base {

  public :

       // maintain access levels for members related to the size the objct

       using Base::size;  //size Base中为public 但在Derived中为private

protected: 

       using Base::n;

}

 

9  class 定义的派生类默认具有private继承。struct定义的类默认具有public继承。在继承关系上也是这样的。

 

10 友元可以访问类的private 和 protected 数据。

   友元关系不能继承。 基类的友元对派生类的成员没有特殊访问权限。如果基类被授予友元关系,则只有基类具有特殊访问权限, 该基类的派生类不能访问授予友元关系的类。

   如果派生类想要将自己成员的访问权授予其基类的友元。派生类必须显式的这样做:基类的友元对从该基类没有特殊访问权限。 同样如果基类和派生都需要访问另一个类,那个类必须特地将访问权限授予基类和每一个派生类。

11 如果基类定义了static成员, 则整个继承层次中只有一个这样的成员,无论从基类派生出多少派生类, 每个static成员只有一个实例。

   static 成员遵循常规访问控制: 如果成员在基类中为private, 派生类不能访问它。

 

12 派生类到基类的转换 如果有一个派生类型的对象, 则可以使用它的地址对基类类型的指针进行赋值或初始化。(定义基类的指针可以指向派生类型) 

同样可以使用派生类型的引用或对象基类类型的引用。

13  引用的转换不同于转换对象。    

 

  -- c++ primer

 

 

posted @ 2012-06-04 02:58  xyecho  阅读(522)  评论(0编辑  收藏  举报