Tag: 传递值传递

我可以通过引用传递参数的函数/方法和在C ++中通过值传递的重载吗?

在C#中,这肯定是可能的,因为这个可编辑的例子可以显示: static void Teste(int x) { } static void Teste(ref int x) { } static void Teste() { int i = 0; Teste(i); Teste(ref i); } 但是可以使用构造函数在C ++(/ CLI)中完成吗? 请参阅以下示例: class Foo { Foo(int bar) { // initializing “Foo” instance… } Foo(int &bar) { // initializing “Foo” instance… } //… } 虽然这个类确实使用这些构造函数进行编译,但我无法看到如何选择何时应用另一个,即调用是ambiguos,因为在C#中没有为此目的知道的关键字“ref”。 我在构造函数中尝试了它,其中名称必须与类相同(当然我可以添加一个无用的参数,但我想知道我是否不能这样做)。 顺便说一句,我用谷歌搜索,只有“通过参考和价值之间有什么区别?” 但没有像这样覆盖超载。 […]

C#按值传递而不是按引用传递

考虑以下代码(我有意将 MyPoint编写为此示例的引用类型) public class MyPoint { public int x; public int y; } 它是普遍公认的(至少在C#中)当你通过引用传递时,该方法包含对被操作对象的引用,而当你通过值传递时,该方法复制被操纵的值,因此全局范围中的值是不受影响。 例: void Replace(T a, T b) { a = b; } int a = 1; int b = 2; Replace(a, b); // a and b remain unaffected in global scope since a and b are value types. 这是我的问题; MyPoint是一个引用类型,因此我希望Point上的相同操作在全局范围内替换a和b 。 例: […]