English 中文(简体)
参数 通过Etiquette(C++)
原标题:Parameter Passing Etiquette (C++) const& vs. value

www.un.org/spanish/ecosoc 如果与参数有关的所有功能都看其价值,那么你是否总是通过经常提及该参数?

一位地雷问题同事说,它处理的是小类型的问题,但我不同意。

因此,这样做是有好处的:

void function(char const& ch){ //<- const ref
    if (ch ==  a ){
        DoSomething(ch);
    }
    return;
}

为此:

void function(char ch){ //<- value
    if (ch ==  a ){
        DoSomething(ch);
    }
    return;
}

他们的规模似乎与我相同:

#include <iostream>
#include <cstdlib>

int main(){

    char ch;
    char& chref = ch;

    std::cout << sizeof(ch) << std::endl; //1
    std::cout << sizeof(chref) << std::endl; //1

    return EXIT_SUCCESS;
}

But I do not know if this is always the case.
I believe I m right, because it does not produce any additional overhead and it is self documenting.
However, I want to ask the community if my reasoning and assumptions are correct?

最佳回答

尽管sizeof(chref)sizeof(ch)相同,但大多数系统参照的传承特性并不说具体提及的执行情况,但地址(即点人)经常在幕后通过。 优化后,可能不会发生。 当你履行编码模板职能时,将不作修改的不为人所知的项目,应始终通过简便的参考。

就小类而言,你可以通过<条码>const之四乘之机,强调你通过签署你的职责来触及这一论点:

void function(const char ch){ //<- value
    if (ch ==  a ){
        DoSomething(ch);
    }
    return;
}
问题回答

你的同事是正确的。 对于小型类型(果园、斜体)来说,如果变数不作修改,就不必参考。 以价值衡量是较好的,因为点人的规模(参照时使用)是关于小规模面积的。

此外,按价值计算,打字率较低,阅读率也略高。

对小值而言,设定参考和参照的成本可能大于复制成本(如果有差别的话)。 当你认为参考参数总是作为参照点执行时,情况尤其如此。 如果你只是宣布你的价值为<条码>,则该文件具有同等效力。 (如果仅使用这一数值,则不作修改)。 我通常只通过<条码>const将所有标准内在类型做成。 数值和所有用户定义的STL类,const &

页: 1 例如有缺陷,因为<代码>chref只是ch的一个别处。 http://www.un.org/Depts/DGACM/index_french.htm

面积为not,与过去相同。 其结果取决于要求订立公约的书目,但<代码>sizeof(参比)产生<代码>sizeof(价值)。

如果与参数有关的所有功能都看其价值,那么你是否总是以固定参照的方式通过该参数?

页: 1 我知道有人不同意我,并主张按价值通过小块建筑,或更喜欢删除<代码>const。 通过参考可增加指示和/或消耗更多的空间。 我通过这一途径来consistency,并且因为总是衡量任何平台的最佳途径是维持许多 has。

没有什么好处可以读取(如果是你喜欢的话)。 业绩可能受到的轻微影响,但在大多数情况下不会成为考虑因素。

更常见的是,通过这些小型建筑。 如按价值计算,请上<代码>const。 定义(取决于声明)

我的建议是,绝大多数团队应当选择一种方式来通过和遵守,而业绩不应影响,除非<>任何指示都标有<>。 <代码>const从来不受到伤害。

我认为,你通过简略提及的一般做法是一种良好做法(例如,请参看下文)。 另一方面,你的朋友们认为,就建筑类型而言,通过提及不应带来任何重大的业绩收益,甚至可能造成轻微的绩效损失。 我来自一个C背景,因此我倾向于考虑点人的提法(尽管存在一些微妙的差别),而“果*”在我熟悉的任何平台上将比“果园”大。

[EDIT:删除错误信息。]

我认为,底线是,当你重新通过更宽泛的用户定义类型时,所谓的功能只需要阅读价值而不加以修改,通过“类型组合和组合”是一种良好做法。 正如你所说的那样,它有自己的记录,有助于澄清你内部的文稿的作用。





相关问题
Undefined reference

I m getting this linker error. I know a way around it, but it s bugging me because another part of the project s linking fine and it s designed almost identically. First, I have namespace LCD. Then I ...

C++ Equivalent of Tidy

Is there an equivalent to tidy for HTML code for C++? I have searched on the internet, but I find nothing but C++ wrappers for tidy, etc... I think the keyword tidy is what has me hung up. I am ...

Template Classes in C++ ... a required skill set?

I m new to C++ and am wondering how much time I should invest in learning how to implement template classes. Are they widely used in industry, or is this something I should move through quickly?

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

typedef ing STL wstring

Why is it when i do the following i get errors when relating to with wchar_t? namespace Foo { typedef std::wstring String; } Now i declare all my strings as Foo::String through out the program, ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

Window iconification status via Xlib

Is it possible to check with the means of pure X11/Xlib only whether the given window is iconified/minimized, and, if it is, how?

热门标签