function-overloading相关内容
我想创建一个包含函数和向量的模板函数,并使用该函数将该向量映射到函数模板将返回的另一个向量。 如果作为参数的函数是自由函数,它可能有两个签名之一。 // T是函数模板的参数 T sig1(const T x); T sig2(const T x,const std :: vector
..
当重载模板函数时,如果它有以下选项,编译器应该如何选择调用哪个版本的函数: 调用函数的模板版本(例如 func(foo))。 函数本身不是模板,但是传递给函数的参数的类型从重载函数模板中指定的类型继承。 考虑以下C ++代码: #include struct Parent {}; struct Child:public Parent {
..
这里是相应的问题,我想知道的是,是否可能将全局函数带入过载具有成员函数的分辨率? 我尝试了两种方法,但两者都不起作用: void foo(double val){cout
..
我最近来到我的注意,成员函数完全 在类中有相同名称的自由函数。而完全地,我的意思是每个自由功能具有相同的名称不考虑重载分辨率。我可以理解为什么它做这样的事情: void f(); struct S { void f(); void g() { f(); //调用S :: f而不是:: f } }; 其中函数具有相同的签名,其唯一自然的变量范围
..
在尝试将整数值插入到字符串中时,我认为当我找到std :: to_string时,我的祈祷被回答了,但是当我真正尝试使用它时,由于某种原因,Visual Studio抱怨歧义。这是我的函数的当前化身: string get_time_remaining(int elapsed) { string remaining ; string temp_string; int tim
..
您好,我有一个混乱或说我更需要了解的东西。我有一个过程和另一个重载的过程相同。 string conct(string a,string b){ string str = conct(a,b,“string” ); return str; } string conct(string a,string b,const char * c){ //进行处理; return
..
在我的库中,我有很多函数重载的形式: /// \brief /// /// \details所做的事情是非常特别的。 template void do_stuff(const T& t); /// \brief不断重复。 /// \copydetails do_stuff() template void
..
如果没有函数重载,函数名称将作为函数代码的地址,当函数被调用时,其地址很容易使用其名称查找。但是对于函数重载,程序如何才能找到正确的函数地址呢?是否有一个类似于虚拟表的隐藏表,存储重载的函数及其地址?非常感谢! 解决方案 编译器可以查看调用,并将其与已知的重载实现匹配,正确对象,真爱。 更新:删除了我在尝试通过展示来展示概念时所做的尝试。编译器可以选择不同命名的函数。
..
可能的重复项: 按返回类型重载函数? 谜题:根据返回值重载C ++函数 因为我有一个库,它以如下形式暴露了一堆函数: bool GetVal double GetVal(); int GetVal(); long GetVal(); //所以。 现在我要包装这些。我宁愿不再重写相同的功能集。我想做一些像 template
..
我们可以在c ++中声明一个这样的函数: int operator +(int,int) 您的答案将不胜感激。 感谢 解决方案 您无法重新定义内置运算符。操作符重载 旨在允许您扩展语言,而不是更改 。重载操作符 的至少一个参数必须是用户定义的类型(类或枚举类型)或引用 到用户定义的类型。
..
stl充满了这样的定义: iterator begin const_iterator begin()const; 由于返回值不参与重载解析,唯一的区别是函数 const 。这是过载机制的这一部分吗?编译器的算法用于解析一行,如: vector :: const_iterator it = myvector.begin(); 解决方案
..
我有以下代码: #include template void f(T){std :: cout void f(bool){std :: cout
..
因为这个问题: c ++中的默认参数 说我有一个像这样的函数: void f(int p1 = 1,int p2 = 2,int p3 = 3,int p4 = 4); 我想只使用一些参数来调用它 - 其余的将是默认值。 这样的工作方式: 模板 v
..
声明像下面这样 void foo(int x){std :: cout
..
这可能是一个noob问题,对不起。我最近遇到一个奇怪的问题,当试图搞砸一些高级的东西在c ++,函数重载和继承。 我会显示一个简单的例子,只是显示问题; 有两个类, classA 和 classB ,如下所示; class classA { public: void func ){}; }; class classB:public classA { public
..
教科书我注意到,您可以通过模板专门化为函数重载提供您自己的标准库函数的实现,例如 swap(x,y)。这对于可以受益于除了赋值交换之外的其他类型的任何类型是有用的,例如 STL容器(已经写入了交换,我知道)。 我的问题是: :模板专门化给你专门的 交换实现,或者函数重载提供你想要使用没有模板的确切的 参数。 为什么会更好? 解决方案 :重载,当你可以,专门在你需要时。
..
例如,我需要看看一个字符串是否包含一个子字符串,所以我只需: String helloworld =你好,世界”; if(helloworld.Contains(“ello”){ // do something } 但如果我有一个项目数组 String helloworld =“Hello World”; String items = {“He”,“
..
考虑代码 公共类基地 { 公虚拟INT添加(int类型的,INT b) { 返回A + b; } } 公共类派生:基本 { 公共覆盖INT添加(INT A,INT B) { 返回A + b; } 公众诠释添加(浮动,浮动B) { 回报率(的Int32)(A + B); } } 如果我创建派生类的一个实例,并调用添加用它为什么调用带有浮动参数的A
..
我写的C99 code,并通过GCC编译。我想用函数重载为文体的原因(否则我会做的名字由我自己重整)。 我读
..
我只是读上 C11 维基百科的文章,C标准的新版本发布2011年12月,和我看到的附加功能之一是“类型的通用前pressions” 使用关键字_Generic型通用前pressions。例如,该 下面的宏CBRT(X)转换为cbrtl(X),CBRT(x)或cbrtf(X) 这取决于x的类型: 的#define CBRT(X)_Generic((X),长双:cbrtl,\\
..