• C++中关于class B:A与Class B::A问题


    一,class B:A为类的继承关系,即A类是B类的基类
    class <派生类名>:<继承方式><基类名>
    {
    <派生类新定义成员>
    };

    例如:

    #include<iostream>
    
    class A
    {
    public:
    void print()
    { std::cout<<"A::print()"<<std::endl; }
    };
    
    class B:A //这里等价于class B:private A 即B继承A的方式为私有继承
    {
    public:
    void test()
    {
    print();
    std::cout<<"B::test()"<<std::endl; 
    }
    };
    
    int main()
    {
    
    B b;
    b.test();
    return 0;
    }

    二、Class A::B为类的嵌套关系,即A类是B类内部的类,双冒号为作用域

    如下示例为《boost程序完全开发指南》中3.4.6节中的桥接模式:

    //File:TestSample.h
    #include<boost/smart_ptr.hpp>
    
    class TestSample
    {
    private:
    class TestSampleImpl;
    boost::shared_ptr<TestSampleImpl> m_ptrImpl;
    
    public:
    TestSample();
    ~TestSample();
    
    void Display();    
    };
    
    //////////////////////////////////////////
    //File:TestSample.cpp
    #include "TestSample.h"
    #include "TestSampleImpl.h"
    #include<boost/make_shared.hpp>
    
    TestSample::TestSample()
    {
    m_ptrImpl=boost::make_shared<TestSampleImpl>();
    }
    
    TestSample::~TestSample()
    {
    
    }
    
    void TestSample::Display()
    {
    m_ptrImpl->Display();
    
    }
    
    ///////////////////////////////////////////
    //File:TestSampleImpl.h
    #include "TestSample.h"
    
    class TestSample::TestSampleImpl
    {
    public:
    TestSampleImpl(){}
    ~TestSampleImpl(){}
    
    void Display();    
    };
    
    ////////////////////////////////////////
    //File:TestSampleImpl.cpp
    #include "TestSampleImpl.h"
    #include<iostream>
    
    void TestSample::TestSampleImpl::Display()
    {
    std::cout<<"TestSampleImpl::Display()"<<std::endl;
    }
    
    
    ////////////////////////////////////////
    //File:main.cpp
    #include"TestSample.h"
    
    int main(int argc,char *argv[])
    {
    TestSample inst;
    inst.Display();
    
    return 0;
    }
  • 相关阅读:
    C# WPF透明黑色样式窗口
    ExtJS速学
    编译away3d例程序记
    用VC加载Lua.lib,C++调用lua脚本函数
    mysql数据库备份
    Google TTS(文字转语音)api 2
    C Sharp Coding Standards
    微信公众平台功能大杂烩 ip/域名查询 车牌号归属地查询 手机归属地查询 公交查询 英汉互译
    google jsapi学习记录
    Google TTS(文字转语音)api
  • 原文地址:https://www.cnblogs.com/inrgihc/p/8203395.html
Copyright © 2020-2023  润新知