一,class B:A爲類的繼承關係,即A類是B類的基類
class <派生類名>:<繼承方式><基類名>
{
<派生類新定義成員>
};ios
例如:spa
#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; }
2、Class A::B爲類的嵌套關係,即A類是B類內部的類,雙冒號爲做用域code
以下示例爲《boost程序徹底開發指南》中3.4.6節中的橋接模式:blog
//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; }