草庐IT

override_function

全部标签

c++ - C++中 "free function"这个词是什么意思?

在阅读boost::test的文档时,我遇到了“自由函数”一词。我的理解是自由函数是任何不返回任何东西的函数(它的返回类型是void)。但是在进一步阅读之后,似乎自由函数也不接受任何参数。但我不确定。这些都是我的假设。那么有人可以定义自由函数吗? 最佳答案 C++中的术语自由函数仅指非成员函数。每个不是成员函数的函数都是自由函数。structX{voidf(){}//notafreefunction};voidg(){}//freefunctioninth(int,int){return1;}//alsoafreefunction

c++ - "pure virtual function call"崩溃从何而来?

我有时会注意到程序在我的计算机上崩溃并显示错误:“纯虚函数调用”。当无法从抽象类创建对象时,这些程序如何编译? 最佳答案 如果您尝试从构造函数或析构函数进行虚函数调用,则可能会出现这种情况。由于您不能从构造函数或析构函数调用虚函数(派生类对象尚未构造或已被销毁),因此它调用基类版本,在纯虚函数的情况下,不会'不存在。classBase{public:Base(){reallyDoIt();}voidreallyDoIt(){doIt();}//DON'TDOTHISvirtualvoiddoIt()=0;};classDerived

c++ - 运算符重载 : member function vs. 非成员函数?

我读到声明为成员函数的重载运算符是不对称,因为它只能有一个参数,而自动传递的另一个参数是this指针。所以没有标准来比较它们。另一方面,声明为friend的重载运算符是symmetric,因为我们传递了两个相同类型的参数,因此可以比较它们。我的问题是,当我仍然可以将指针的左值与引用进行比较时,为什么首选friend?(使用非对称版本的结果与对称版本相同)为什么STL算法只使用对称版本? 最佳答案 如果您将运算符重载函数定义为成员函数,则编译器会将s1+s2等表达式转换为s1.operator+(s2)。这意味着,运算符重载的成员函数

c++ - std::function 和 std::bind: 它们是什么,应该在什么时候使用它们?

我知道仿函数是什么以及何时将它们与std算法一起使用,但我不明白Stroustrup在C++11FAQ中对它们的描述。.谁能解释一下std::bind和std::function是什么,什么时候应该使用它们,并给一些新手示例? 最佳答案 std::bind适用于partialfunctionapplication.也就是说,假设你有一个函数对象f这需要3个参数:f(a,b,c);你想要一个新的函数对象,它只接受两个参数,定义为:g(a,b):=f(a,4,b);g是函数f的“部分应用”:中间的参数已经指定了,还剩下两个。您可以使用s

c++ - 工厂 : how to pass temporary smart pointers to functions. C++

我有一个类(class)FooclassFoo;一个工厂返回一个指向它的指针:std::unique_ptrcreateFoo();而且,因为Herb告诉我对Foo的生命周期没有特殊要求的普通函数应该采用普通的裸指针:voidplainf(Foo*f);我的客户应该如何正确地做到这一点?plainF(createFoo());如果他不得不写,他会不高兴的:autosomeName=createFoo();plainF(someName.get()); 最佳答案 您可以使用get成员函数,它返回一个指向所拥有对象的原始指针。plain

c++ - 工厂 : how to pass temporary smart pointers to functions. C++

我有一个类(class)FooclassFoo;一个工厂返回一个指向它的指针:std::unique_ptrcreateFoo();而且,因为Herb告诉我对Foo的生命周期没有特殊要求的普通函数应该采用普通的裸指针:voidplainf(Foo*f);我的客户应该如何正确地做到这一点?plainF(createFoo());如果他不得不写,他会不高兴的:autosomeName=createFoo();plainF(someName.get()); 最佳答案 您可以使用get成员函数,它返回一个指向所拥有对象的原始指针。plain

objective-c - 如何处理 Xcode 警告 "no previous prototype for function..."?

这个警告在一些第三方库中弹出了一堆。有没有办法在不修改代码的情况下处理它(例如忽略警告)?如果我必须修改代码来修复它,我该怎么做?这是导致警告的代码块之一:BOOLFBIsDeviceIPad(){#if__IPHONE_OS_VERSION_MAX_ALLOWED>=30200if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad){returnYES;}#endifreturnNO;} 最佳答案 通常有这样的警告,你可以在文件顶部定义一个函数原型(prototype),例如:B

ios - Xcode 9 中的 "This function declaration is not a prototype"警告

使用Xcode9时,有一些编译器警告说Thisfunctiondeclarationisnotanprototype。它建议将void添加到方法体中,这将解决它。我遇到的问题是,这些警告也会针对系统API引发,例如UIApplication委托(delegate)方法:-(void)application:(UIApplication*)applicationhandleActionWithIdentifier:(NSString*)identifierforRemoteNotification:(NSDictionary*)userInfowithResponseInfo:(NSDi

python - 语法错误 : Non-ASCII character '\xa3' in file when function returns '£'

假设我有一个函数:defNewFunction():return'£'我想打印一些前面有井号的东西,当我尝试运行这个程序时它打印一个错误,显示这个错误消息:SyntaxError:Non-ASCIIcharacter'\xa3'infile'blah'butnoencodingdeclared;seehttp://www.python.org/peps/pep-0263.htmlfordetails谁能告诉我如何在我的返回函数中包含一个井号?我基本上是在一个类中使用它,它在包含井号的'__str__'部分中。 最佳答案 我建议您阅读

php - 奇怪的 PHP 错误 : 'Can' t use function return value in write context'

我遇到了这个错误,我无法理解它。确切的错误信息是:Fatalerror:Can'tusefunctionreturnvalueinwritecontextin/home/curricle/public_html/descarga/index.phponline48第48行是:if(isset($_POST('sms_code')==TRUE){这里会发生什么?这是完整的功能:functionvalidate_sms_code(){$state=NOTHING_SUBMITED;if(isset($_POST('sms_code')==TRUE){$sms_code=clean_up($