zoukankan      html  css  js  c++  java
  • 《面向对象编程》c++ primer 第15章

    一(数据抽象)继承和动态绑定是面向对象编程最重要的两个行为。

    只有public和protected成员才能被继承。

    (1)protected成员使用规则

    1 像proivate成员一样,protected成员不能被类的用户访问(基类可以访问,基类对象不能访问protected成员)。

    2 像public成员一样,protected成员可以被类的派生类访问(派生类可以访问protected成员,派生类对象不行)。

    3 只有在派生类中才可以通过派生类对象访问基类的protected成员。

    以下程序有错误?错在第3条。

    #include <iostream>
    using namespace std;
    class base
    {
          protected:
                    int m;}               
    class top:public base{
          public:
                 int mem(base &a,top &z)
                 {//cout<<a.m<<endl;//error
                 cout<<z.m<<endl;
                 return 0;}
          
          };

    (2)动态绑定:条件1:含有虚函数。条件2:通过基类类型的的指针或者引用。

    (3)使用与操作符覆盖虚函数。例如,base *p=&derived;double d=p->base::price(24);

    (4)名字冲突:与基类成员同名的派生类成员将屏蔽对基类成员的直接访问。

    (5)纯虚函数:

    1 意义: 在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。

    2 定义:virtual <类型><函数名>(<参数表>)=0;

    3 使用:凡是含有纯虚函数的类叫做抽象类。这种类不能声明对象,只是作为基类为派生类服务。除非在派生类中完全实现基类中所有的的纯虚函数,否则,派生类也变成了抽象类,不能实例化对象。


    二  友元关系(类或者函数)

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

    友元关系不能继承。


    三 句柄类

    意义:为了实现多态而不必担心指针的控制。

    定义:1包含对象的指针。2包含计数器(防止多个指针指向同一对象时,对象被删从而引起错误)。


  • 相关阅读:
    WHERE col1=val1 AND col2=val2;index exists on col1 and col2, the appropriate rows can be fetched directly
    MySQL 交集 实现方法
    MBProgressHUD的使用
    Xcode4 使用 Organizer 分析 Crash logs(转)
    SimpleXML 使用详细例子
    PHP的XML Parser(转)
    iPhone,iPhone4,iPad程序启动画面的总结 (转)
    Pop3得到的Email 信件格式介绍
    yii总结
    隐藏Tabbar的一些方法
  • 原文地址:https://www.cnblogs.com/catkins/p/5270770.html
Copyright © 2011-2022 走看看