Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
一个类在C++; 我想知道下面是否可以用C++来做。_C++_Class_Object_Abstraction - Fatal编程技术网

一个类在C++; 我想知道下面是否可以用C++来做。

一个类在C++; 我想知道下面是否可以用C++来做。,c++,class,object,abstraction,C++,Class,Object,Abstraction,我想做的是有一组类,它们都有相同的公共部分,也就是说,相同的公共变量和相同的方法集,但是这组类中的不同类在私有部分会有所不同,也就是说,它们可能有不同的私有变量——尽管对于这样一个组的所有类,方法集都是统一的,但这些方法的实现可能会有所不同 还有一个额外的位——我不知道C++是否支持——我希望它能使属于这个组中的类的所有对象都是相同的数据类型。也就是说,在类内部之外的程序的任何部分都不会区分一个类的对象和另一个类的对象——前提是两个类都是这个组的一部分 如果函数将此类组的一个类作为参数,则该类组

我想做的是有一组类,它们都有相同的公共部分,也就是说,相同的公共变量和相同的方法集,但是这组类中的不同类在私有部分会有所不同,也就是说,它们可能有不同的私有变量——尽管对于这样一个组的所有类,方法集都是统一的,但这些方法的实现可能会有所不同

还有一个额外的位——我不知道C++是否支持——我希望它能使属于这个组中的类的所有对象都是相同的数据类型。也就是说,在类内部之外的程序的任何部分都不会区分一个类的对象和另一个类的对象——前提是两个类都是这个组的一部分

如果函数将此类组的一个类作为参数,则该类组的任何类都可以作为参数。引用该类组的一个类的对象的变量可以引用该类组的任何类的对象


为什么我想知道这是否可以做到?因为如果可以的话,我可以使用这样一组类作为抽象层。

看起来你是在谈论接口。嗯,C++中没有纯粹实现的。 在C++中,可以创建.< /p>
此外,您还可以在C#中找到一些有用的信息。

这看起来确实像是一项继承工作。您可以使用一个基类来定义基本数据类型(根据您的要求),同时为“类组”定义公共接口(可能带有纯虚拟成员函数)。

为所有“公共部分”创建一个抽象基类,然后为“私有部分”创建子类然后,可以使用声明为抽象基类类型的变量和方法参数简单地引用所有类的所有实例。哦,101


当然,有不止一种方法……你读过C++吗?你知道
template
virtual
的关键字是什么吗?您可以有一个只包含虚拟成员函数(并从中继承)的抽象类,等等……是的——在阅读了您的答案之后,我接着读了一些关于接口的内容。它们似乎正是我所需要的。但不幸的是,就我而言,C#与Microsoft Visual Studio的联系似乎过于紧密。此外,我所能找到的所有文档都没有给出一个直接的答案,说明在公共接口下定义的所有对象是否都被视为相同的数据类型——这是我所寻找的一个非常关键的不可协商的特性。不过,你的回答似乎是我得到的三个答案中最好的一个。谢谢。@user3080003我很乐意帮忙;)