今天我的朋友问我,为什么我们真的需要在C++中使用构造函数?我们可以在结构化语言中做同样的事情。构造函数的特点是什么,告诉我构造函数的需求,以便在我的C++程序中使用它。请帮助我,并给我一些例子,让我能够澄清他的疑问。
发布于 2012-01-06 04:27:06
你不需要构造函数,就像你不需要流行语言的大多数特性一样。
构造函数的存在是为了使做错误的事情变得更加困难。在这种情况下,使用未初始化的数据。
发布于 2012-01-06 04:30:18
一个病态的答案是,构造器不会改变语言的图灵完备性,因此,从严格意义上说,你不需要它们,因为你不需要语言的很多功能。但这是正式的,而不是实际的。你晚上只想着理论而不感到温暖,这是情有可原的。
要说明构造函数为什么有用,一个很好的实际示例是考虑RAII模式。通过构造函数,您可以很好地将初始化和获取封装在您具有销毁的同一位置。没有构造函数的C以程序员忘记该过程中的一步而闻名。
发布于 2012-01-06 04:33:15
正如其他人已经回答的那样,您使用构造函数的方式与在过程化语言中使用init函数的方式相同,但是多亏了构造函数,程序员才不会忘记调用init函数-编译器会为他做这件事。除了自动调用它之外,这还提供了一个额外的好处,那就是优雅地解决了继承初始化问题:如果A类扩展了B类,而B类又扩展了C类,则可以保证将调用所有三个构造函数(用于A、B和C类),并且它们将以正确的顺序(C类,然后是B类,然后是A类)被调用,以便每个构造函数都可以使用超类中的所有数据(因为它已经被初始化)。在没有构造函数的语言的情况下,程序员需要负责所有这些记账工作。
https://stackoverflow.com/questions/8749248
复制相似问题