gpt4 book ai didi

c++ - 为什么使用构造函数而不是函数?

转载 作者:可可西里 更新时间:2023-11-01 16:37:03 26 4
gpt4 key购买 nike

这是一个非常基本的问题,我搜索了它,但我只想问这个社区我们有constructorsmethods。但通常我们使用构造函数来初始化变量而不是方法。我认为两者都可以用来初始化变量。那么两者之间的基本区别是什么。有什么确凿的理由吗?这是一个非常基本的问题,所以为了初学者水平而忍受它。提前致谢..

最佳答案

最重要的区别:当你实例化一个对象时,它的构造函数将被调用,而调用方法总是可选的。因此,您可能会忘记调用初始化方法而无法正确初始化所有内容。

例如,所有这些实例化对象的常规方法都会调用构造函数

Foo* p = new Foo();
Foo p;

或者,如果您有强制参数,请不要定义默认构造函数,而是要求使用参数进行构造:

class Foo
{
private:
Foo();
public:
Foo(int param1, double param2)
};

这样做的好处是在实例化类之前就需要参数。所以你不得不这样做:

Foo* p = new Foo(1, 5.0);

并且未能使用有效参数构造成为编译器错误:

Foo* p = new Foo(); // compiler error

因此,只要有可能,永远不要在构造函数中进行初始化。在少数情况下,构造函数可能不可行。例如,使构造函数失败的唯一方法是使用异常。构建失败可能是“常规”而不是真正的异常(exception)。在某些体系结构上,异常也可能很昂贵。另一种情况可能是当您想要确保虚方法完全绑定(bind)时,只有在构造之后才能保证为真。

关于c++ - 为什么使用构造函数而不是函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9752437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com