在 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...
}
//...
}
虽然这个类确实使用这些构造函数进行编译,但我不知道当我应用一个构造函数时如何选择另一个构造函数,也就是说,调用是不明确的,因为我知道在 C# 中没有用于此目的的关键字“ref”。我在构造函数中尝试了一下,其中名称必须与类相同(当然我可以添加无用的参数,但我想知道是否可以not do it).
顺便说一句,我用谷歌搜索,只得到了诸如“通过引用传递和通过值传递之间有什么区别?”之类的内容。但没有什么涵盖像这样的超载。我想作为解决方法,我可以使用指针,这要归功于“获取地址”(&
);或者如上所述,有一个额外的无用参数。但我想知道的是:我可以有这样的重载(按引用/按值)吗?
提前致谢,
您可以通过提供对所需类型的显式转换来在 C++ 中完成类似的操作。
struct Foo
{
Foo(int /*bar*/) {}
Foo(int &/*bar*/) {}
};
int main()
{
int value = 5;
Foo foo(static_cast<const int&>(value));
return 0;
}
演员阵容const
将导致重载解析忽略采用非常量引用的构造函数,并决定按值传递。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)