• 把接口和实现分开的方法


    假定接口类为A,而将实现放在Impl类中,由于非指针类型成员变量必须和该成员类声明放在一起,而指针类型可以不这样做,因此必须将Impl成员指针作为A的成员变量,代码如下

    Impl.h 实现类的头/实现文件,可以看到里面实现了方法operator()
    class Impl
    {
        
    public:
        
    void operator()(int nData)
        
    {
            
        }

    }
    ;
    A.h 接口类头文件,不须要包含实现类的头文件
    class Impl;

    class A
    {
        
    public:
            A();
            
            
    ~A();
            
            
    void operator()(int nData);
            
        
    private:
            Impl 
    * impl;
    }
    ;
    A.cpp 接口类的实现,需要包含实现类的头文件
    #include "A.h"
    #include 
    "Impl.h"

    A::A()
    {
        impl 
    = new Impl;
    }


    A::
    ~A()
    {
        delete impl;
    }


    void A::operator()(int nData)
    {
        (
    *impl)(nData);
    }



    Main.cpp 主函数,只需要包含接口类头文件即可,完全不需要知道实现类的任何东西
    #include "A.h"

    void main()
    {
        A a;
        
        a(
    0);
    }

  • 相关阅读:
    USACO 3.3 A Game
    USACO 3.3 Camelot
    USACO 3.3 Shopping Offers
    USACO 3.3 TEXT Eulerian Tour中的Cows on Parade一点理解
    USACO 3.3 Riding the Fences
    USACO 3.2 Magic Squares
    USACO 3.2 Stringsobits
    USACO 3.2 Factorials
    USACO 3.2 Contact
    USACO 3.1 Humble Numbers
  • 原文地址:https://www.cnblogs.com/cutepig/p/1412534.html
Copyright © 2020-2023  润新知