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;
}

 

转载于:https://www.cnblogs.com/inrgihc/p/8203395.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值