草庐IT

C++空类的那点事儿

什么是C++的空类顾名思义,空类就是指哪些不包含成员变量的类。例如以下这个就是一个空类:classEmptyBase{};既然如此,那么是不是说空类的内部一定不会其他代码呢?不是的,空类内部也可以包含其他东西,例如:构造函数、析构函数、静态成员变量、静态函数、成员函数、typedef语句等。例如在以下代码中EmptyBase依然是空类:classEmptyBase{public://构造函数EmptyBase(){}//析构函数~EmptyBase(){}//typedef并没有给类增加成员或者函数typedefintINT_NUM;//不涉及到内部成员变量的内部函数voidset(inta)

c++ - 创建一个空类纯粹是为了将其与另一个类区别开来吗?

我有一个类CardStack。我有几个继承自CardStack的类,例如Cascade、Deck、Foundation等Foundation不需要向CardStack添加任何功能,但出于显示目的,我的应用需要知道哪个CardStack实际上是Foundations。顺便说一句,我没有这样的函数CardStack.Display()(我使用的是模型-View-Controller模式,其中View对象只是查询Model以找出它正在处理的对象类型)。对我来说似乎没问题,但有什么理由不这样做吗?classFoundation:publicCardStack{};classModel{Casc

c++ - 创建一个空类纯粹是为了将其与另一个类区别开来吗?

我有一个类CardStack。我有几个继承自CardStack的类,例如Cascade、Deck、Foundation等Foundation不需要向CardStack添加任何功能,但出于显示目的,我的应用需要知道哪个CardStack实际上是Foundations。顺便说一句,我没有这样的函数CardStack.Display()(我使用的是模型-View-Controller模式,其中View对象只是查询Model以找出它正在处理的对象类型)。对我来说似乎没问题,但有什么理由不这样做吗?classFoundation:publicCardStack{};classModel{Casc

python - 为什么 Python 的空类和函数可以用作任意数据容器,而不是其他对象?

我见过两个不同的Python对象用于将任意数据组合在一起:空类和函数。defstruct():passrecord=structrecord.number=3record.name="Zoe"classStruct:passrecord=Struct()record.number=3record.name="Zoe"即使类不为空,只要在运行时定义,它似乎就可以工作。但是当我自大并尝试使用内置函数或类来做到这一点时,它不起作用。record=set()record.number=3AttributeError:'set'objecthasnoattribute'number'record

python - 为什么 Python 的空类和函数可以用作任意数据容器,而不是其他对象?

我见过两个不同的Python对象用于将任意数据组合在一起:空类和函数。defstruct():passrecord=structrecord.number=3record.name="Zoe"classStruct:passrecord=Struct()record.number=3record.name="Zoe"即使类不为空,只要在运行时定义,它似乎就可以工作。但是当我自大并尝试使用内置函数或类来做到这一点时,它不起作用。record=set()record.number=3AttributeError:'set'objecthasnoattribute'number'record

python - Python中的空类对象

我正在教授一个关于面向对象编程的Python类(class),并且在我复习如何解释类​​时,我看到了一个空的类定义:classEmployee:pass然后该示例继续为此类的对象定义名称和其他属性:john=Employee()john.full_name="johndoe"有趣!我想知道是否有办法为这样的类的实例动态定义函数?类似:john.greet()=print'Hello,World!'这在我的Python解释器中不起作用,但还有其他方法吗? 最佳答案 类或多或少是对象属性的dict的精美包装器。当您实例化一个类时,您可以

python - Python中的空类对象

我正在教授一个关于面向对象编程的Python类(class),并且在我复习如何解释类​​时,我看到了一个空的类定义:classEmployee:pass然后该示例继续为此类的对象定义名称和其他属性:john=Employee()john.full_name="johndoe"有趣!我想知道是否有办法为这样的类的实例动态定义函数?类似:john.greet()=print'Hello,World!'这在我的Python解释器中不起作用,但还有其他方法吗? 最佳答案 类或多或少是对象属性的dict的精美包装器。当您实例化一个类时,您可以

php - 声明一个空类不好吗?

在业余时间,我正在构建一个数独求解器,以尝试掌握PHP中OOP的窍门。对于那些不知道的人来说,数独谜题的最常见形式是一个9x9矩阵,其中包含从1到9的数字,其中3x3正方形以类似井字游戏的模式划定。有些数字是预先填写的。拼图的目的是填满剩余的数字,这样任何行、列或3x3方block都不会多次包含相同的数字。为此,我制作了一些类(class)。Cell可以是Constraint的元素,即行、列和3x3正方形。Sudoku是Constraint和Cell的集合。我有一个SudokuSolver类,它动态包含带有SolverHelper子类类声明的源文件,并实例化每个子类之一。一个助手有一个

c++ - std::tuple 中的空类

Thesizeofanyobjectormembersubobjectisrequiredtobeatleast1evenifthetypeisanemptyclasstype[...],inordertobeabletoguaranteethattheaddressesofdistinctobjectsofthesametypearealwaysdistinct.cppreferencequote这个我就知道了。我刚发现的是一些库类型,如std::tuple不使用任何大小来包含空类。这是真的?如果是,那怎么样?编辑:在阅读了@bolov对他的回答的最后注释后,我还有一个问题:因为Em

c++ - 空类的大小

代码:#includeclassA{};classB{charx;};intmain(){std::cerr我知道询问空类(class)的规模是一个常见的面试问题-我知道答案是一个。我的问题是......空类的“1”字节中包含什么(我猜它是空的),编译器在内部做了什么来使它成为sizeofB与sizeofA相同在这种情况下?我想完全理解它,而不仅仅是知道答案。 最佳答案 这实际上不是一个有意义的问题:运行时只是将一个字节标记为已占用,因此不会在其位置分配其他对象。但是没有任何东西“保留”在那里占用字节。此规则的唯一原因是对象必须是唯