Tag: 重载

为什么原始函数和用户定义的types在从函数返回为“const”时的行为不同?

#include <iostream> using namespace std; template<typename T> void f(T&&) { cout << "f(T&&)" << endl; } template<typename T> void f(const T&&) { cout << "f(const T&&)" << endl; } struct A {}; const A g1() { return {}; } const int g2() { return {}; } int main() { f(g1()); // outputs "f(const T&&)" as […]

macros可以通过参数的数量来重载吗?

这是如何工作的? 一个C99 / C ++ 11可变参数macros如何实现扩展到不同的事物,仅仅有多less个论点?

我可以重写和重载Java中的静态方法吗?

我想知道: 为什么不能在Java中重写静态方法? Java中可以重载静态方法吗?

简化const重载?

我一直在教C ++编程类多年,向学生解释的一个最棘手的问题是const重载。 我通常使用向量类的例子和它的operator[]函数: template <typename T> class Vector { public: T& operator[] (size_t index); const T& operator[] (size_t index) const; }; 我很难解释为什么需要两个版本的operator[]函数,但是在试图解释如何将两个实现结合在一起时,我经常发现自己浪费了大量的语言arcana。 问题是,我知道如何以另一种方式实现这些函数之一的唯一好的,可靠的方法是使用const_cast / static_cast技巧: template <typename T> const T& Vector<T>::operator[] (size_t index) const { /* … your implementation here … */ } template <typename T> T& Vector<T>::operator[] (size_t index) { return const_cast<T&>(static_cast<const Vector&>(*this)[index]); } […]

更改哈希,而无需在jQuery中重新加载

我有以下代码: $('ul.questions li a').click(function(event) { $('.tab').hide(); $($(this).attr('href')).fadeIn('slow'); event.preventDefault(); window.location.hash = $(this).attr('href'); }); 这只是简单地淡化你点击时的div,但是当你点击的时候,我希望页面的URL哈希标签改变,以便人们可以复制和书签。 目前,当散列标签发生变化时,这将有效地重新加载页面。 是否有可能改变哈希标签,而不是重新加载页面,以防止跳跃效应?

具有通用参数types的函数

我想弄清楚如何定义一个函数,适用于多种types的参数(如int和int64)。 据我了解,函数重载是不可能在F#(编译器肯定抱怨)。 以下面的function为例。 let sqrt_int = function | n:int -> int (sqrt (float n)) | n:int64 -> int64 (sqrt (float n)) 编译器当然抱怨语法是无效的(模式匹配中的types约束似乎不被支持),但我认为这说明了我想实现的function:一个函数在多个参数types上运行,并返回一个值types。 我有一种感觉,这是可能的在F#使用genericstypes/types推理/模式匹配的一些组合,但语法躲过了我。 我也尝试使用:? 运算符(dynamictypestesting)和模式匹配块中的子句时 ,这仍会产生各种错误。 由于我对这门语言比较陌生,所以我很可能会在这里做一些不可能的事情,所以请让我知道是否有其他解决办法。

为什么在一个类上定义__getitem__可以在Python中迭代呢?

为什么在一个类上定义__getitem__使其迭代? 例如,如果我写: class b: def __getitem__(self, k): return k cb = b() for k in cb: print k 我得到的输出: 0 1 2 3 4 5 6 7 8 … 我真的希望看到一个错误返回从“for c in cb:”

C ++ 11中已删除函数的确切语义是什么?

struct A { A(); A(const A&); A& operator =(const A&); A(A&&) = delete; A& operator =(A&&) = delete; }; struct B { B(); B(const B&); B& operator =(const B&); }; int main() { A a; a = A(); // error C2280 B b; b = B(); // OK } 我的编译器是VC ++ 2013 RC。 错误C2280:'A&A :: […]

如何“重新导入”模块到Python然后代码被导入后被改变

我有一个foo.py def foo(): print "test" 在IPython中我使用: In [6]: import foo In [7]: foo.foo() test 然后我把foo()改为: def foo(): print "test changed" 在IPython中,调用的结果仍然是test : In [10]: import foo In [11]: foo.foo() test 然后我使用: In [15]: del foo In [16]: import foo In [17]: foo.foo() test 我删除foo.pyc在同一个文件夹foo.py存在,但仍然没有运气。 我可以知道如何重新导入运行时更新的代码?

在C ++中使用const重载是什么?

在C ++中,函数的签名部分取决于它是否为const。 这意味着一个类可以有两个具有相同签名的成员函数,但一个是const而另一个不是。 如果你有这样的类,那么编译器会根据你调用的对象决定调用哪个函数:如果它是类的常量实例,函数的const版本将被调用; 如果该对象不是const,则另一个版本将被调用。 在什么情况下你可能想利用这个function?