草庐IT

override_function

全部标签

c++ - "local variables at the outermost scope of the function may not use the same name as any parameter"是什么意思?

我一直在阅读C++入门第5版。在第6.1章功能参数列表的第三段中。它写道“此外,函数最外层范围内的局部变量不得使用与任何参数相同的名称”。什么意思?我不是以英语为母语的人。我不明白函数的“最外层范围”的实际含义。 最佳答案 函数的最外层是定义函数体的block。您可以将其他(内部)block放入其中,并在该block的本地变量中声明变量。内部block中的变量可以与外部block中的变量或函数参数具有相同的名称;他们将名称隐藏在外部范围内。外部block中的变量不能与函数参数同名。演示:voidf(inta)//functionha

c++ - "Function has no address"尽管禁用了优化 (/Od)

在MSVC2012的调试过程中,我尝试从Watch窗口调用一些函数,以便将数据转储到文件中。但是,我不断收到此错误:FunctionMatrix::Savehasnoaddress,possiblyduetocompileroptimizations.Matrix类位于我自己的外部库中。快速检查表明,外部库中的所有方法都没有地址,并且所有从Watch调用它们的尝试都会返回此错误,但在头文件中定义的方法除外。主项目中的方法无论在哪里定义都有地址。当然,整个解决方案都禁用了优化。符号正常加载。我该如何解决? 最佳答案 到目前为止,我找到

c++ - std::function::argument_type 的替代品是什么?

根据cppreference.com所有以下三个:argument_type、first_argument_type和second_argument_type在C++17中已弃用并在C++20中删除。这些成员类型的标准库替代品是什么?我的意思是我可以编写自己的类型特征,但我怀疑如果没有在标准库中进行适当的替换,某些东西会被删除。举个例子:templatevoidcall_with_user_input(Ff){typenameF::first_argument_typex;//whattouseinstead??std::cin>>x;f(x);} 最佳答案

c++ - 在编译时测试字节序 : is this constexpr function correct according to the standard?

在寻找一种在编译时检查字节顺序的方法后,我想出了以下解决方案:staticconstinta{1};constexprboolis_big_endian(){return*((char*)&(a))==1;}GCC仅在需要constexpr的某些情况下接受此代码:intb[is_big_endian()?12:25];//worksstd::arrayc;//fails对于第二种情况,GCC说error:accessvalueof'a'througha'char'glvalueinaconstantexpression。我在标准中找不到任何禁止此类事情的内容。也许有人可以澄清在哪种情况

c++ - 为什么 C++11 不将 lambda 隐式转换为 std::function 对象?

我实现了一个通用的事件发射器类,它允许代码注册回调,并发出带有参数的事件。我使用Boost.Any类型删除来存储回调,以便它们可以具有任意参数签名。一切正常,但由于某种原因,传入的lambda必须首先转换为std::function对象。为什么编译器不推断lambda是函数类型?是因为我使用可变参数模板的方式吗?我使用Clang(版本字符串:AppleLLVM版本5.0(clang-500.2.79)(基于LLVM3.3svn))。代码:#include#include#include#include#include#includeusingstd::cout;usingstd::en

C++ 构造函数 : why is this virtual function call not safe?

这是来自C++11标准sec12.7.4。这比较困惑。文中最后一句话到底是什么意思?为什么最后一个方法调用在B::B不明确的?不应该只是打电话a.A::f?4Memberfunctions,includingvirtualfunctions(10.3),canbecalledduringconstructionordestruction(12.6.2).Whenavirtualfunctioniscalleddirectlyorindirectlyfromaconstructororfromadestructor,includingduringtheconstructionordest

C++专访: vtable for a class with a pure virtual function

我今天被问到这个面试问题!!(这是一个非常尴尬的电话采访..):Whatisthedifferencebetweenthevtableforaclasswithvirtualfunctionsandaclasswithpurevirtualfunctions?现在,我知道C++标准没有指定任何关于vtables的内容,甚至没有指定v-table的存在......但是从理论上讲,答案是什么?我脱口而出,具有纯虚函数的类可以有一个vtable,其纯虚函数的vtable条目将指向派生类的实现。这个假设正确吗?我没有得到面试官的肯定回答。假设的编译器会为只有纯虚函数的类创建一个vtable吗?

c++ - 从 std::function 调用签名推断模板参数

考虑这个模板函数:templateReturnTfoo(conststd::function&fun){returnfun();}为什么编译器不能从传递的调用签名中推断出ReturnT?boolbar(){/*...*/}foo(bar);//worksfoo(bar);//error:nomatchingfunctioncall 最佳答案 bool(*)()类型的函数指针可以转换为std::function但不是同一类型,因此需要转换。在编译器可以检查该转换是否可能之前,它需要推导出ReturnT作为bool,但要做到这一点,它需

c++ - 函数 "int (*function())[10];"是什么意思?

我看了一段代码,发现有这样的函数。int(*function())[10]{...}我很困惑。这个函数是什么意思,它会返回什么? 最佳答案 它是一个函数的定义,它返回一个指向10个整数数组的指针。请记住,返回值是一个指针,而不是一个实际的数组。数组不能从函数返回。根据标准第8.3.5/8段:Functionsshallnothaveareturntypeoftypearrayorfunction,althoughtheymayhaveareturntypeoftypepointerorreferencetosuchthings这里有

c++ - 是否可以允许一种 std::function 类型接受具有不同签名的 lambda

我有一个高阶函数map类似于STLfor_each,并映射一个std::functionvector上的对象的东西。templatevectormap(functionf,vectorxs){vectorret;for(auto&x:xs)ret.push_back(f(x));returnret;}现在,我想让这个高阶函数同时获取function&)>类型的两个对象和function)>,如随附的最小示例所示。问题是function&)>和function)>似乎可以相互转换(见head和head2),但map不会采用const引用版本function&)>(见Q1)。可以告诉map