重载方法中的 StackOverflowException
我试图在这样的代码中调用重载方法: public abstract class BaseClass { public abstract bool Method(T other); } public class ChildClass : BaseC…
为什么类的 const 版本选择非常量版本?
以下是测试代码: struct A { operator int (); operator int () const; }; void foo (const int); 现在,调用时: foo(A()); // calls A::operator i…
C++0x const RValue 引用作为函数参数
我试图理解为什么有人会编写一个采用常量右值引用的函数。 在下面的代码示例中,const 右值引用函数(返回“3”)的用途是什么。 为什么重载解析优先…
传递 size_t 时对重载 sqrt 函数的不明确调用
string aux; int maxy, auxx = 0; cin >> aux; maxy = (int)sqrt(aux.size()); 为什么我会收到此错误: 1> error C2668: 'sqrt' : ambiguous call to …
为什么 C# 编译器重载解析算法将具有相同签名的静态成员和实例成员视为相等?
让我们有两个签名相等的成员,但一个是静态的,另一个不是: class Foo { public void Test() { Console.WriteLine("instance"); } public static voi…
在可变参数模板函数中重载 ostream
我有一个可变参数函数,我想在第一个参数类型上重载。 void write( void ) { } void write( std::ostream& ) { } template void write( std::ostream&…
C++0x 与 using 声明的混淆
对于这种情况会发生什么: struct A { void f(); }; struct B : virtual A { using A::f; }; struct C : virtual A { using A::f; }; struct D : B, C…
重载解析和数组:应该调用哪个函数?
考虑以下程序: #include #include void f(char const*&&) { std::puts("char const*&&"); } // (1) void f(char const* const&) { std::puts("char c…
当传递空值时,方法重载解析系统如何决定调用哪个方法?
例如,您有一个类似的类型: public class EffectOptions { public EffectOptions ( params object [ ] options ) {} public EffectOptions ( IEnumer…
关于泛型和 IEnumerable 的方法重载解析
前几天我注意到这一点,假设你有两个重载方法: public void Print(IEnumerable items) { Console.WriteLine("IEnumerable T"); } public void Print(…
无用的(也许是错误的?)gcc 错误消息
我刚刚花了几个小时调试一个编译器错误,如果编译器的错误消息更有帮助的话,我可以立即修复该错误。 我将其简化为一个简单的示例: template int f(i…
参数类型的函数具有选择的非常量引用的复制构造函数?
不久前,当我想编写 is_callable 特征时,我对某些代码的以下行为感到困惑。重载解析不会调用接受非常量引用参数的函数,对吧?为什么它在下面不拒绝…