草庐IT

more-private

全部标签

c++ - 如何禁止公共(public)继承但允许私有(private)(和 protected )继承

C++11引入了关键字final来禁止future的覆盖或禁止继承。可以使用它的最常见示例是用于不打算用作基类的类(例如具有非虚拟析构函数)的情况。但是,有时我们可能希望在两个类之间建立is-implemented-in-terms-of关系(即private继承),而不是is-关系(public继承)。但是,final禁止这两种类型的继承。我的问题如下:有没有办法允许private继承但禁止public继承(可能不是直接的,但至少我们可以“模拟”它)?在这种情况下,即使我们使用具有非虚拟析构函数的类也不会有任何问题,因为我们不能通过指向基的指针直接使用派生类,所以我们应该没问题。我正

c++ - 如何禁止公共(public)继承但允许私有(private)(和 protected )继承

C++11引入了关键字final来禁止future的覆盖或禁止继承。可以使用它的最常见示例是用于不打算用作基类的类(例如具有非虚拟析构函数)的情况。但是,有时我们可能希望在两个类之间建立is-implemented-in-terms-of关系(即private继承),而不是is-关系(public继承)。但是,final禁止这两种类型的继承。我的问题如下:有没有办法允许private继承但禁止public继承(可能不是直接的,但至少我们可以“模拟”它)?在这种情况下,即使我们使用具有非虚拟析构函数的类也不会有任何问题,因为我们不能通过指向基的指针直接使用派生类,所以我们应该没问题。我正

C++:覆盖公共(public)\私有(private)继承

如果B使用public从A继承,可以B覆盖其中一个函数并强制它私密吗?classA{public:virtualdoublemy_func1(inti);virtualdoublemy_func2(inti);}classB:publicA//Noticethepublicinheritance{public:virtualdoublemy_func1(inti);private:virtualdoublemy_func2(inti);}反过来呢?如果继承类型是私有(private)的-B可以强制一个特定的函数是公共(public)的吗?如果A是纯抽象的怎么办?有区别吗?protect

C++:覆盖公共(public)\私有(private)继承

如果B使用public从A继承,可以B覆盖其中一个函数并强制它私密吗?classA{public:virtualdoublemy_func1(inti);virtualdoublemy_func2(inti);}classB:publicA//Noticethepublicinheritance{public:virtualdoublemy_func1(inti);private:virtualdoublemy_func2(inti);}反过来呢?如果继承类型是私有(private)的-B可以强制一个特定的函数是公共(public)的吗?如果A是纯抽象的怎么办?有区别吗?protect

c++ - 基类中的私有(private)静态成员

#include#includeclassBase{staticstd::strings;};templateclassDerived:Base{public:Derived(){std::coutobj;}本程序编译运行正常。静态变量s在私有(private)继承的基类中是私有(private)的。派生类如何访问它?如果派生类不是模板,编译器会提示访问私有(private)变量。[aminasya@amy-aminasya-lnxc++]$g++--versiong++(GCC)4.4.720120313(RedHat4.4.7-3)Copyright(C)2010FreeSoftw

c++ - 基类中的私有(private)静态成员

#include#includeclassBase{staticstd::strings;};templateclassDerived:Base{public:Derived(){std::coutobj;}本程序编译运行正常。静态变量s在私有(private)继承的基类中是私有(private)的。派生类如何访问它?如果派生类不是模板,编译器会提示访问私有(private)变量。[aminasya@amy-aminasya-lnxc++]$g++--versiong++(GCC)4.4.720120313(RedHat4.4.7-3)Copyright(C)2010FreeSoftw

C++ - 将静态映射初始化为私有(private)类成员

假设我在一个深夜很无聊,在紧张地盯着电脑显示器几个小时之后,我决定实现一个聚合C++类来管理绘制像素的颜色,因为我显然已经疯了。对于初学者,我们只需告诉(可能是单例的)ColorManager对象我们想要使用什么颜色,然后它会返回一个Color对象,无论它是什么。一个简单的实现:#include"Color.h"#includeenumCOLOR{RED=0,BLUE,GREEN,YELLOW,ORANGE,WHITE,BLACK,BRICKS_FROM_A_DISTANCE_ON_AN_UNUSUALLY_SUNNY_AFTERNOON,//etcCOLOR_COUNT};class

C++ - 将静态映射初始化为私有(private)类成员

假设我在一个深夜很无聊,在紧张地盯着电脑显示器几个小时之后,我决定实现一个聚合C++类来管理绘制像素的颜色,因为我显然已经疯了。对于初学者,我们只需告诉(可能是单例的)ColorManager对象我们想要使用什么颜色,然后它会返回一个Color对象,无论它是什么。一个简单的实现:#include"Color.h"#includeenumCOLOR{RED=0,BLUE,GREEN,YELLOW,ORANGE,WHITE,BLACK,BRICKS_FROM_A_DISTANCE_ON_AN_UNUSUALLY_SUNNY_AFTERNOON,//etcCOLOR_COUNT};class

c++ - 私有(private)和 protected 纯虚函数之间有什么区别吗?

我可以理解,可能有理由将已实现的(与纯的)虚函数声明为私有(private)或protected。Afaik,如果您将实现的虚拟方法声明为protected,您的子类可以调用基类的方法(而其他人不能)。如果将其声明为私有(private),则只有基类可以调用虚拟方法的默认实现。但是,对于纯虚拟,没有基本实现......那么将纯虚拟声明为私有(private)或protected在功能上不等效吗?protected纯虚拟没有意义,因为您永远无法调用基类的相应方法。protected纯虚拟是否有任何意义?关于SO有一些类似的主题,但我找不到任何可以简明扼要地回答我的问题的内容。

c++ - 私有(private)和 protected 纯虚函数之间有什么区别吗?

我可以理解,可能有理由将已实现的(与纯的)虚函数声明为私有(private)或protected。Afaik,如果您将实现的虚拟方法声明为protected,您的子类可以调用基类的方法(而其他人不能)。如果将其声明为私有(private),则只有基类可以调用虚拟方法的默认实现。但是,对于纯虚拟,没有基本实现......那么将纯虚拟声明为私有(private)或protected在功能上不等效吗?protected纯虚拟没有意义,因为您永远无法调用基类的相应方法。protected纯虚拟是否有任何意义?关于SO有一些类似的主题,但我找不到任何可以简明扼要地回答我的问题的内容。