virtual void myFunc(int& a, int& b) {}
Run Code Online (Sandbox Code Playgroud)
我收到有关未使用变量的警告,但我不想在基类中对它们做任何事情.我希望派生类在需要时实现它们,如果它们不实现它们则不执行任何操作.除了在编译器上放置标志之外,我该怎么做才能停止警告?
考虑这些替代运算符表示:(取自此处)
Primary Alternative
&& and
&= and_eq
& bitand
| bitor
~ compl
! not
!= not_eq
|| or
|= or_eq
^ xor
^= xor_eq
Run Code Online (Sandbox Code Playgroud)
为什么存在这些替代运算符表示?我喜欢他们,但我想找到理由让我的经理允许我使用它们.
假设我有一个抽象基类,我希望有一个必须由派生类实现的纯虚方法,但我想确保派生方法以特定顺序调用函数我可以做些什么来强制执行它?
IE
base class
virtual void doABC()=0;
virtual void A()=0;
virtual void B()=0;
virtual void C()=0;
// must call ABC in the correct order
derived class public base
void doABC();
Run Code Online (Sandbox Code Playgroud)
这样我就可以更好地理解如何设计我的类来强制某人正确使用我的类.
bool multiply_overflow_double(double a,double b)
{
double v = a * b;
if (std::isfinite(v))
return (v > std::numeric_limits<uint64_t>::max());
return true;
}
Run Code Online (Sandbox Code Playgroud)
我有两个双打,我需要检查它是否会溢出uint64_t.我确实考虑过用分区做传统方式,但这似乎更简单.
与传统方式相比,a和b大于0会有什么明显的问题?
除了修改变量之外,我有许多功能大致相同
struct example
{
std::string name;
std::string category;
};
using ObjName = std::string;
using Value = std::string;
bool updateName(const ObjName &name, const Value& value) ...
bool updateCategory(const ObjName &name,const Value& value)
{
// boost optional pointing to struct reference
auto obj = findOjb(name);
if (obj)
{
obj.get().category = value; // variable name changes
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是我可以做些什么来组合代码?我怀疑它会涉及模板可能是traites/functors但我不确定如何处理任何想法?