草庐IT

Operators

全部标签

c++ - 调用转换运算符

以下行为的原因是什么?classBoolWrapper{public:BoolWrapper(boolvalue):value(value){}operatorbool()const{returnvalue;}operatorint()const{return(int)value;}private:boolvalue;};BoolWrapperbw(true);if(bw){...}//invokesoperatorbool()if(bw==true){...}//invokesoperatorint()--why?这种行为是预期的吗?(使用GCC4.7.2。)

c++ - 重载全局类型转换运算符

为了测试和显示我的库中某些函数的结果,我创建了一组方便的函数。我有一个execute看起来像的功能:templatestd::stringexecute(conststd::string&func_name,R(*func_ptr)(constI&),constI&func_input);它调用该函数,并在我可以发送到std::cout的格式化字符串中显示结果和参数。.问题是我的一些函数不返回convertible-to-string结果。我以为我可以简单地重载全局::operatorstd::string像这样:templateoperatorstd::string(conststd

c++ - 这是实现通用 operator== 和 operator< 的安全方法吗?

看到thisquestion之后,我的第一个想法是定义通用等价和关系运算符是微不足道的:#includetemplatebooloperator==(constT&a,constT&b){returnstd::memcmp(&a,&b,sizeof(T))==0;}templatebooloperatorusingnamespacestd::rel_ops然后会变得更有用,因为它会被运算符的默认实现完全通用==和.显然,这不会执行成员比较,而是按位比较,就好像该类型只包含POD成员一样。这与C++生成复制构造函数的方式并不完全一致,例如,确实执行成员复制。但是我想知道上面的实现是否真的

c++ - 重载逻辑运算符被认为是不好的做法?

重载&&、||是个坏主意吗?或逗号运算符,为什么? 最佳答案 我不会重载operator&&或operator||。即使您定义了一个产生bool代数(例如有限集)的类,重载operator&和operator|可能是更好的选择。原因是C++程序员期望operator&&和operator||有特殊语义:它们是短路,即不要如果没有必要,评估他们的右手论点。您无法通过重载获得此行为,因为您将定义一个函数。重载operator,已经在例如Boost.Assign图书馆。这也是我所知道的其重载的唯一例子,我什至从未考虑过自己重载它。你最好有

c++ - 为下标运算符和函数调用运算符提供默认参数

在下面的代码中,我为数组下标运算符提供了默认参数。structst{intoperator[](intx=0){//codehere}};但是,编译器产生了一个错误:error:'intst::operator[](int)'cannothavedefaultargumentsintoperator[](intx=0)但是,如果我为函数调用运算符提供默认参数。structst{intoperator()(intx=0){//codehere}};它工作正常。所以,我有一个问题:为什么数组下标运算符不允许默认参数?为什么函数调用运算符允许默认参数? 最佳答案

c++ - 带有多个参数的 static_cast 是怎么回事?

谁能告诉我这个转换有什么效果(除了将happyNumber设置为1337),如果有的话,如果没有其他效果,我怎么能写这样的代码???这是编译器错误,还是C++的某些“隐藏特性”?inthappyNumber=static_cast(123.456,TRUE,"WTF",false,"IS",NULL,"GOING",0xff,"ON???",1337);我很惊讶这会编译。我是通过一个bug发现它的,在这个bug中我不小心将第二个参数设置为要进入正在转换的表达式的函数调用中的参数。这导致了一个讨厌的错误,其中对象是从第二个参数转换而来的,调用函数时只有一个参数。它编译了……而且最初并没有

c++ - 'const&' 在 C++ 中是什么意思?

对此表示歉意,我是一名正在尝试学习C++的学生,我只是认为问比不知道要好。我理解运算符&的“地址”和const关键字分别意味着什么。但是当我阅读一些示例代码时,我看到了const&,我只是想知道它是什么意思。它用于代替函数原型(prototype)中的参数,例如:voidfunction(type_Nameconst&);如果只使用其中一个我会理解,但我在这里有点困惑,所以一些专业的见解会很好。 最佳答案 C++中的类型是从右到左阅读的。不方便的是,这恰恰是我们喜欢阅读单个单词的相反方向。但是,当试图决定像const或volatil

c++ - 如何在 C++ 中将运算符作为函数调用

我想调用某个类的特定基类的特定运算符。对于简单的函数,这很简单:我只需编写SpecificBaseClass::function(args);。我应该如何在不施法的情况下为运算符(operator)实现相同的操作?孤立的问题:classA{public:Aoperator+(constA&other)const{...}};classB:publicA{public:Boperator+(constB&other)const{...}};...Ba,b;Bc=A::operator+(a,b);//howthisshouldbeimplemented?Igetanerror...我从G

mongodb如何使用nand运算符查询?

我正在使用聚合的$match。我试过了。$match:{$not:{'A':false,'B':'condition'}}但不像nand那样工作。它的工作方式就像不是A而不是B。我如何查询Not(AandB)? 最佳答案 这应该会为您获取结果{$or:[{'a':{$ne:1}},{'b':{$ne:2}}]}但是,这个表达式在我的案例中没有产生预期的结果,所以我尝试了这个-{$nor:[{$and:[{a:1},{b:2}]}]} 关于mongodb如何使用nand运算符查询?,我们在

php - 在 Phalcon\Mvc\Collection 中使用 mongo 运算符 $and

我正在尝试使用MongoDB的运算符$and应用于Phalcon\Mvc\Collection,如下所示:$documents=Staff::find($condition);数组$condition具有这样的“role”:$condition["role"]=["\$regex"=>"$somevalue","\$and"=>['$ne'=>"admin"]];我得到了这个错误Can'tcanonicalizequery:BadValue:unknownoperator:$and'请帮我解决这个问题。有没有更好的方法可以将多个条件应用于此“角色”? 最佳答