private-inheritance

    25热度

    5回答

    由于第三方库的布局,我有类似下面的代码: struct Base { static void SomeStaticMethod(){} }; struct Derived1: private Base {}; struct Derived2: public Derived1 { void SomeInstanceMethod(){ Base::SomeS

    1热度

    1回答

    我遇到以下情况的问题:库(CardReader)实现了ISO7816协议并与智能卡(由我实现)进行通信。 我必须实现使用此库的专有协议。 在CardReader中有以下类APDURequest和APDUResponse。 CardReader类实现了所有的功能来发送和接收这些消息。 class APDUResonse { public: /* ctor, copy ctor, mov

    3热度

    1回答

    而当私有继承必须使用而不是遏制,解释,这article的作者说以下内容: “我们需要之前构造使用的对象,或在摧毁它,另一个基地子对象。如果稍长对象的生命周期的问题,有没有办法把它比使用继承” 其他如果你想子对象A到子对象B之前建造和B之后破坏,是不够的声明在B之前,在封闭课堂上?换句话说,为什么我们不能在这种情况下使用遏制来达到相同的结果?

    1热度

    1回答

    为什么对象切片不发生在私有继承中?在这种情况下,Static_cast会产生错误? 我明白,私有继承不会在其继承类之间保持“是 - 一种”关系。这是否与切片有关,因为派生不是基类型的,因此编译器强制不进行隐式转换?

    1热度

    1回答

    通常,我们希望使用私有继承来将实现细节隐藏到基类中。如果是这样, 1)为什么名称公布功能又出现了?仅仅是为了语言的完整性还是有实际用法呢? 2)即使我公开基类函数名,派生类仍然可以声明具有相同名称的另一个函数。请考虑下面的代码。 #include "iostream" using namespace std; class Base { public: int zoo;

    0热度

    4回答

    在C++编程语言,第4版,第20.5.2节“访问基类”(第592页)中,它说(关于私有继承):通过限制 接口到基定义一个类时,使得强的保证可以是 provided.For例如 私人的碱是最有用的,B是一个指针ž.The矢量 的实现细节从第25.3节向其向量基地 添加类型检查的模板是一个好的例子mple。 现在还不清楚Bjarne Stroustrup在这里想说些什么。如何才能通过将“接口”限制在基

    26热度

    2回答

    ,请参见下面的代码 struct A { using type = int; }; struct B : private A {}; struct C : B { using base_type = A; }; 所有GCC 6.1,铛3.8和MSVC 2015年更新3拒绝编译这一点,因为A是不是因为里面C的访问名称A是B的私人基础。看来gcc认为A在using base_type = A是

    2热度

    2回答

    我有一个问题。我在玩enable_shared_from_this,注意到一件奇怪的事情。这个例子正常工作: #include <iostream> #include <memory> using namespace std; struct Test : enable_shared_from_this<Test> { }; int main() { shared_ptr<

    4热度

    2回答

    让我们考虑两个类A和B具有以下接口: class A { public: virtual void start() {} //default implementation does nothing }; class B { public: void start() {/*do some stuff*/} }; ,然后第三类来自继承,A公开,因为它实现了这个“接口

    3热度

    1回答

    在私有继承的基类对象和子对象之间有以下三种类型转换,其中两种工作,但最后一种不支持。我想知道是什么导致了不同的结果。 #include<iostream> #include <string> using namespace std; class test :private string { public: test(string st) :string(st){} v