草庐IT

Operators

全部标签

c++ - 与 C++ 中的 Null 比较

好的,请仔细检查我下面的代码,它只是函数的一部分voidRepeatWord(){system("cls");stringword=NULL;stringnewword=NULL;intrepeats=0;while(true){if(word==NULL){cout>word;}....好吧,我一直在使用其他编程语言,并且我总是与NULL值进行比较,但是在C++中……这似乎是一种不同的情况。错误说..error:nomatchfor'operator=='in'word==0'好吧,我想知道我只是在与NULL进行比较,我真的不知道为什么这是错误的。将值与NULL与C++进行比较是否不

c++ - XOR 交换算法中运算符的未定义行为?

voidswap(int*a,int*b){if(a!=b)*a^=*b^=*a^=*b;}因为上面的*a^=*b^=*a^=*b只是*a=*a^(*b=*b^(*a=*a^*b)),可以(例如)在第三个*a之前对第二个*a进行求值(对于XOR)修改(由=)?用C99/C11/C++98/C++11写有关系吗? 最佳答案 C++11标准说:5.17/1:Theassignmentoperator(=)andthecompoundassignmentoperatorsallgroupright-to-left.(...)theassi

C++ + 运算符的这种用法叫什么?目的是什么?

我最近在运算符重载评论中看到了一个例子,他们谈到+运算符本质上是一个有2个参数的函数。经过一番探索,我决定更深入地研究一下,发现像函数一样调用+确实有效,只是不是您所期望的那样...例如:intfirst=6;intsecond=9;intresult=+(second,first);//result=6这个程序集是intresult=+(second,first);moveax,dwordptr[first]movdwordptr[result],eax对+的调用只是将最后一个参数移动到eax中。谁能告诉我这个的目的和/或它叫什么? 最佳答案

c++ - 如果我想让类不可复制, "operator="返回类型是否重要?

假设我有一个不支持成员复制的类,所以我不想保留编译器实现的复制构造函数和赋值运算符。我也不想实现这些,因为要么这样做需要额外的努力,我不需要在我的类里面进行这些操作,或者那些操作在我的类里面没有意义所以我想禁止他们。这样做I'lldeclarethemprivateandprovidenoimplementation:classNonCopyable{private:NonCopyable(constNonCopyable&);//notimplementedanywherevoidoperator=(constNonCopyable&);//notimplementedanywher

c++ - Operator = 在 C++ 中使用 Const 变量重载

我想知道你们是否可以帮助我。这是我的.h:ClassDoctor{conststringname;public:Doctor();Doctor(stringname);Doctor&Doctor::operator=(constDoctor&doc);}和我的主要:intmain(){Doctord1=Doctor("peter");Doctord2=Doctor();d2=d1;}我想执行operator=函数。谁能帮我?注意Doctor上的const成员。************编辑:*********我的主要问题是我希望另一个类具有一个Doctor属性,就像Pacient有一个D

c++ - 为优先级队列重载运算符<

我正在尝试为我制作的类创建一个优先级队列-std::priority_queuenodes;我像这样重载了Position中的boolPosition::operator但是,每当我尝试编译时,我都会收到此错误消息,提示error:nomatchfor‘operator我在这里错过了什么?感谢您的帮助。 最佳答案 关系运算符不应更改操作数。尝试:boolPosition::operator我的猜测是__x或__y(或两者)都是const。如果__x是const,则不能调用非常量成员函数,也不能将__y作为传递right参数,如果__

c++ - C/C++ 后置递增不止 1

我正在从缓冲区读取字节。但有时我正在阅读的是一个单词或更长的时间。//assumebufferisoftypeunsignedchar*read_ptr(buffer+(position++))这很好,但我怎样才能将位置递增2或4?我无法让+=运算符后递增,是吗?原因是,我有一个大而可怕的表达式,我想计算它,同时递增位置变量。我想我想出了自己的解决方案。我很确定它有效。但是每个人都会讨厌它,因为这不是非常可读的代码。read_ptr(buffer+(position+=4)-4)然后我会在稍微测试一下以确保它做正确的事情之后将它变成一个宏。结论:不要这样做。这只是一个坏主意,因为这种事

c++ - g++ 表示 : warning: statement has no effect for shift bits operators

我正在实现alkhwarizmi算法。没错,但我的g++编译器不喜欢移位运算符:>>和当我编译它时,我得到这个输出:>g++-Wall-std=c++0x-o"Al-khwarizmialgorithm.o""Al-khwarizmialgorithm.cpp"(indirectory:/home/akronix/workspace/Algorithms)>Al-khwarizmialgorithm.cpp:Infunction‘intalkhwarizmi(int,int)’:Al-khwarizmialgorithm.cpp:31:9:warning:statementhasnoe

c++ - 运算符重载 C++

重载运算符时,是否需要重载>=对于c++来说,调用!operator=for!=、!>foroperator=似乎是明智的做法。是这样吗,还是有必要重载每个函数? 最佳答案 Boostoperators可能是你要找的。这些将基于一些基本运算符派生出您的大部分运算符。C++不自动提供这一点是有道理的,因为可以为赋予完全不同的含义,例如(尽管这通常不是一个好主意)。 关于c++-运算符重载C++,我们在StackOverflow上找到一个类似的问题: https:

c++ - 提升 C++ 与 Python 的能力

来自Python,我注意到C++中的东西往往更复杂一些。一个很好的例子是将数字提升为幂。在Python的数学库中,只需要:a=a**b但是,在C++中,我在在线文档中找到了解释,例如......//floatpow(floatbase,floatexp);//doublepow(doublebase,doubleexp);//longdoublepow(longdoublebase,longdoubleexp);//floatpow(floatbase,intiexp);//doublepow(doublebase,intiexp);//longdoublepow(longdouble