草庐IT

overriding

全部标签

c++ - 标准中override和noexcept的顺序

override和noexcept的顺序是标准要求的吗?classBase{public:virtualvoidfoo(){}};classDerived:publicBase{public://virtualvoidfoo()override{}//Ok//virtualvoidfoo()noexcept{}//Ok//virtualvoidfoo()noexceptoverride{}//Okvirtualvoidfoo()overridenoexcept{}//Error};intmain(){}我正在使用gcc4.7.2。 最佳答案

c++ - 通过覆盖 'new' 运算符,您获得了哪些有用的功能?

您发现重写新运算符对哪些新功能(用于调试或非调试)有帮助? 最佳答案 我不得不重载new的主要原因是为了性能。一个例子是分配大量小对象,使用通用分配器通常会相当慢,但使用自定义分配器通常可以很多改进。 关于c++-通过覆盖'new'运算符,您获得了哪些有用的功能?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1821799/

c++ - 为什么 "override/final"需要放在函数声明符之后?

我一直想知道这个决定,为什么override和final必须在成员函数声明符之后:structBase{virtualvoidvirtFun();};structFoo:Base{virtualvoidvirtFun()override;};对我来说,用override/final代替virtual会更合乎逻辑:structBase{virtualvoidvirtFun();};structFoo:Base{overridevoidvirtFun();};这背后有什么原因吗?也许与C++11之前的兼容性问题? 最佳答案 是因为ove

C++覆盖/重载问题

我在C++中遇到问题:#includeclassA{protected:voidsome_func(constunsignedint¶m1){std::coutsome_func(21,"somechar*");return0;}我正在使用g++4.0.1和编译错误:$g++-W-Wall-Werrortest.cctest.cc:Inmemberfunction‘virtualvoidB::some_func(constunsignedint&,constchar*)’:test.cc:24:error:nomatchingfunctionforcallto‘B::some_

c++ - child 的祖 parent 重载功能

这个问题在这里已经有了答案:Functionwithsamenamebutdifferentsignatureinderivedclass(2个答案)关闭5年前。我需要理解为什么C++不允许在父级中声明任何重载函数的情况下访问子级中的祖父级重载函数。考虑以下示例:classgrandparent{public:voidfoo();voidfoo(int);voidtest();};classparent:publicgrandparent{public:voidfoo();};classchild:publicparent{public:child(){//foo(1);//notac

c++ - 如何在 C++ 中使用 override 关键字进行多重泛型继承?

我有一个通用的IDetachable接口(interface),它提供了一个方法:templateclassIDetachable{public:virtualTdetached()const=0;};我有这些示例类:classA:publicIDetachable{virtualAdetached()constoverride{//someimplementationwhichreturnsadetachedAobject}};继承B时出现的问题:classB:publicA,publicIDetachable{virtualBdetached()constoverride{//so

c++ - 调用虚函数的逻辑不清晰(或者是方法隐藏?)

(在msvc2017上测试)structAAA{virtualfloatrun(intarg){return5.5f;}};structBBB:AAA{virtualboolrun(doublearg){returnfalse;}};structCCC:BBB{virtualfloatrun(intarg){return7.7f;}virtualboolrun(doublearg){returntrue;}};CCCc;BBB*pb=&c;pb->run(5);//callCCC::run(doublearg),WHY??pb->run((int)5);//callCCC::run(d

c++ - xcode 7 如何抑制警告 "overrides a member function but is not marked ' override'”

我今天将xcode更新为7。更新后,我正在处理的项目出现警告“覆盖成员函数但未标记为‘覆盖’”。由于我们的项目将“踩踏警告为错误”设置为true。我遇到了很多错误。我仔细检查了“OtherLinkerFlags”并且非常确定“-Wsuggest-override”标志不包括在内。因为这是一个大项目,我更喜欢抑制警告,而不是在任何地方添加关键字“override”。关于禁用警告的任何建议?谢谢 最佳答案 您需要关闭-Winconsistent-missing-override标志,该标志会在最新版本的clang上自动添加-Wall。您

c++ - 在 C++ 中的什么地方使用 override 关键字

在C++.h或.cpp中使用override标识符的理想文件是什么?war.hclassTimeStone:publicInfinityStone{private:boolcapturedByThanos()override;#1};war.cppboolTimeStone::capturedByThanos()override#2{returntrue;} 最佳答案 在类的成员规范之外定义函数时,不能放置覆盖说明符。该语言不允许这样做,编译器会提示。所以真的只有一个选择。除此之外,此选项也更有意义。声明函数时,您表达了覆盖它的意图

c++ - 在 Visual C++ 中全局覆盖 malloc

我正在尝试找出一种在VisualC++(2005)中全局覆盖malloc和相关函数的方法。我的设置是一个带有静态链接运行时库的dll,它由我自己的c++代码、外部c++和c代码组成。我想要完成的是允许dll的用户设置他们自己的内存分配函数的实现。我无法使用的解决方案:全局覆盖new和delete,我的代码库中有很多外部C库,这意味着这不会捕获很多分配。#将malloc定义为不同的符号。这将迫使我将此定义推送到所有使用的外部库的build设置中,我真的想避免这种情况。我不关心的事情:如果任何外部库正在以其他方式分配内存(HeapAlloc、内存映射文件或它们提出的任何其他方式),我承认无