Language agnostic 为什么(或何时)我应该分开申报和转让?

Language agnostic 为什么(或何时)我应该分开申报和转让?,language-agnostic,constructor,Language Agnostic,Constructor,我的IDE经常要求我这样做。我模糊地记得我在一些C++文档中读到了一些与构造函数中的异常有关的东西。 Java示例: void foo(){ String result = ""; int i = 5; // should this ever be a problem ? } 对于这两条线,IDE建议分开 其他问题 一,。我是通过价值创造还是通过引用创造有什么区别。 例如在C++类中,{{};…A=。。。;vs A*A=新的 二,。我想,int或

我的IDE经常要求我这样做。我模糊地记得我在一些C++文档中读到了一些与构造函数中的异常有关的东西。 Java示例:

    void foo(){
        String result = "";
        int i = 5; // should this ever be a problem ?
    }
对于这两条线,IDE建议分开

其他问题

一,。我是通过价值创造还是通过引用创造有什么区别。 例如在C++类中,{{};…A=。。。;vs A*A=新的

二,。我想,int或float等基本类型永远不会有问题。同样的吗?< /P>这个答案涉及C++,其他语言的行为可能不同。 实际上,您应该在声明变量时初始化它们

对于POD类型,这只是为了避免您忘记初始化它们,从而使用未初始化的数据

对于用户类型,这样做是为了优化:

A other;

//this will first construct a, and then assign a new value to a
//the initial construction is useless and takes up processing time
A a;
a = other;

//b is only initialized once
A b = other;
1这不是通过值或引用创建变量。它是在堆栈或堆上创建的。这里的很多帖子都解释了这些差异


这不是问题,这更像是POD的习惯。初始化与声明在同一行中进行的主要原因已在答案的第一行中解释。

您已将问题标记为不可知语言,但它确实非常特定于语言。请下定决心。@比约恩:那是因为我不确定问题出在哪里。我认为java和C++可能类似,也可能是其他管理的语言,在C++、D、Delphi以及其他可能的地方,人工管理是可能的。因此决定将其限制为具有构造函数的langs。你认为我应该用这5个标签来重新标记吗?我认为现在的问题范围太大了。答案将需要对每种语言进行详细的解释,因为它们在处理异常和对象构造/初始化时都有很大的不同。@ J.O.RN:无论如何,我想知道至少这是关于Delphi、java和C++的。即使有几个答案,也没关系。所以,我会保持现状一段时间,看看会发生什么。如果你想知道这与异常安全有什么关系,请阅读。IIUC,你的2这不是问题,更多的是POD的习惯不正确。C++将调用自动生成的默认Cor or,即它与习惯无关。我正在检查我未被接受的问题,请不要认为这是吹毛求疵