【发布时间】:2013-04-14 17:05:45
【问题描述】:
在 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...
}
//...
}
虽然这个类确实使用这些构造函数进行编译,但当我应用一个是另一个时,我看不到如何选择,也就是说,调用是模棱两可的,因为我没有为此目的知道的关键字作为“ref” C#。我在构造函数里试过了,名字必须和类一样(当然可以加个没用的参数,但我想知道能不能不做)。
顺便说一句,我在谷歌上搜索,只得到“通过 ref 传递和按值传递有什么区别?”之类的东西。但没有像这样覆盖过载。而且我想作为解决方法,我可以使用指针,这要归功于“获取地址”(&);或者如上所述,有一个额外的无用参数。但我想知道的是:我可以有这样的重载(按引用/按值)吗?
提前致谢,
【问题讨论】:
-
尝试通过传递一个指针和一个值来初始化构造函数,看看你得到了什么
-
这可能是重复的,但在我的辩护中,我搜索的不是很好;此外,另一个问题的名称不是很吸引人(尽管这个问题的名称更少)。另外,作为旁注,另一个人问这是否有意义,我问是否可能。
标签: c# c++ c++-cli pass-by-reference pass-by-value