C有class级吗?

好吧,你可以称我为菜鸟,但我很困惑。

我的前同学付钱让我在C写一个程序。她给了我一个任务,它说了一句“等等等等至少两个类 ,编写至少一个构造函数并重写至少一个方法 ”它一字一句地说。

然后我告诉她“这是C ++而不是C”她说“但我们正在学习C”

我忽略了它并用c ++编写程序并发送给她,因为我以为她不知道她在说什么。 她说“它不适用于代码块,wtf是cout <<”,然后她给我发了一大堆他们写的代码而不是cout和cin有printf和scanf。 它必须是C.所以,我用printf和scanf重写了程序,她仍然说代码块抛出错误(我仍然把类作为任务要求)。

C有class级吗? 或者有误会或什么?

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

不,C本身没有类,只有C ++(当时以“C with classes”开头……)。 但是你可以在C ++代码中使用标准的C库,即使它通常不被认为是好的做法(C ++有自己的,更高级别的结构,例如cout vs printf )。

您也可以在C中模拟类,inheritance和虚函数的行为,但这不值得痛苦。

您应该购买/获得您的前同学C编程书:-)

C没有课程。

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

可能这不是你想要的。

C没有类的正式结构。 您可以生成具有模块级数据的模块,根据您自己的协议,您不会在其他任何地方进行外部数据,或静态数据,以及写入函数来获取,设置和操作该数据。 您甚至可以使用函数指针来操作类似的数据类型,就像它们在类中一样。

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

看似矛盾的经典案例,似乎:-)

她的要求CLASS,CONSTRUCTOR,METHOD的术语都是C ++术语,而它们都不是C术语(其中最接近的可以说是STRUCT,INITIALIZATION,FUNCTION )。 你的朋友在这里混淆了什么。 我怀疑她的老师是在混淆什么,不过……

C没有类,但您可以使用结构和指向函数的指针来模拟它。 C99是基于C ++的一点点(只是一点点),所以很容易用C再现类。