Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/64.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_Class - Fatal编程技术网

C有课吗?

C有课吗?,c,class,C,Class,我被要求实现一个“带类的C程序”。C是否有类,或者是否存在某种误解?C没有类 但是可以通过使用静态全局变量作为私有类成员,使用静态函数作为私有成员函数来近似类。外部成员作为公共成员。在这种情况下,可以将整个文件视为一个类 这可能不是你想要的。 < P>不,C本身没有类,只有C++(它开始时是“C类”)。但是,C++代码库中可以使用标准C库,即使它通常不被认为是好的实践(C++中有它自己的、更高级的构造,例如 cOUT/COD> VS Prtff)。 您也可以在C中模拟类、继承和虚拟函数的行为,

我被要求实现一个“带类的C程序”。C是否有类,或者是否存在某种误解?

C没有类

但是可以通过使用静态全局变量作为私有类成员,使用静态函数作为私有成员函数来近似类。外部成员作为公共成员。在这种情况下,可以将整个文件视为一个类


这可能不是你想要的。

< P>不,C本身没有类,只有C++(它开始时是“C类”)。但是,C++代码库中可以使用标准C库,即使它通常不被认为是好的实践(C++中有它自己的、更高级的构造,例如<代码> cOUT/COD> VS <代码> Prtff)。 您也可以在C中模拟类、继承和虚拟函数的行为,但这并不值得


你可能应该给你的前同学买一本C编程书:-)

不,C没有课。也就是说,有一些方法可以模拟C语言中的面向对象编程——快速的谷歌搜索应该会产生一些有用的结果。

C语言没有类的形式构造。您可以生成具有模块级数据的模块,根据您自己的协议,您将不会在任何其他地方外部化这些数据或静态数据,并编写函数来获取、设置和以其他方式操作这些数据。您甚至可以使用函数指针来操作类似的数据类型,就像它们在类中一样


但是,您不会受到C编译器的类语义或其他规则的保护,因为C编译器不了解类。但是,结构化数据功能非常强大。

这似乎是冲突需求的典型案例:-)


<>她的需求类、构造函数、方法的术语都是C++术语,而它们都不是C术语(最接近的是结构、初始化、函数)。你的朋友把这里的事情弄糊涂了。我怀疑她的老师是否混淆了一些东西,尽管……

C没有类,但你可以用结构和指向函数的指针来模拟它。C99是基于C++的一点(一点点),所以很容易用C.</P>来复制类。P>C主要使用功能/结构编程,而不是使用面向对象的编程,如使用C++类、java、python等语言。但在少数情况下,我们使用的类如下:

typedef结构{
形状类形状;
浮动宽度、高度;
}
矩形类;

Nick希望,因为经常(虽然不是总是)C++有它自己的、更高级的、更多的OO结构来解决同一个问题。C长时间构造和函数指针,事实上可能创建类的东西。虽然也没有可移植的类型检查,但没有重载atd变量数量的函数参数。我不认为这很容易。您可以创建不可移植类(typeof、container_of)或类的无效实现。请参阅