草庐IT

OPERATOR

全部标签

c++ - 为什么这个涉及重载运算符和隐式转换的 C++ 表达式不明确?

operatorbool打破operator的使用在下面的例子中。谁能解释为什么bool在if(a中同样相关表达式作为具体的操作符,是否有变通方法?structFoo{Foo(){}Foo(intx){}operatorbool()const{returnfalse;}friendbooloperator当我编译时,我得到:g++foo.cppfoo.cpp:Infunction'intmain()':foo.cpp:18:11:error:ambiguousoverloadfor'operatorfoo.cpp:8:17:note:candidate:booloperator

c++ - 不能重载 operator<< 作为成员函数

我正在尝试重载operator作为成员函数。如果简单地这样做,它就可以工作:friendostream&operator在我的头文件和MyClass.cc文件中:ostream&operator但是,如果我尝试使用friend关闭并使其成为成员函数,然后它会提示operator只能接受一个论点。为什么?ostream&MyClass::operator我在thisquestion阅读它不能是成员函数,但不知道为什么? 最佳答案 作为成员函数重载时,a被解释为a.operator,所以它只需要一个显式参数(this作为隐藏参数)。由于

c++ - 不能重载 operator<< 作为成员函数

我正在尝试重载operator作为成员函数。如果简单地这样做,它就可以工作:friendostream&operator在我的头文件和MyClass.cc文件中:ostream&operator但是,如果我尝试使用friend关闭并使其成为成员函数,然后它会提示operator只能接受一个论点。为什么?ostream&MyClass::operator我在thisquestion阅读它不能是成员函数,但不知道为什么? 最佳答案 作为成员函数重载时,a被解释为a.operator,所以它只需要一个显式参数(this作为隐藏参数)。由于

c++ - 赋值运算符继承

有这个代码:#includeclassBase{public:Base(){std::coutg++4.6编译后的输出:ConstructorbaseConstructorbaseAssignmentbaseDestructorbaseDestructorbase说赋值运算符不被继承,为什么还要调用基类的赋值运算符? 最佳答案 其实调用的是Derived隐式定义的operator=。编译器提供的定义依次为Base调用operator=,您会看到相应的输出。构造函数和析构函数也是如此。当你把它留给编译器定义operator=时,它定义

c++ - 赋值运算符继承

有这个代码:#includeclassBase{public:Base(){std::coutg++4.6编译后的输出:ConstructorbaseConstructorbaseAssignmentbaseDestructorbaseDestructorbase说赋值运算符不被继承,为什么还要调用基类的赋值运算符? 最佳答案 其实调用的是Derived隐式定义的operator=。编译器提供的定义依次为Base调用operator=,您会看到相应的输出。构造函数和析构函数也是如此。当你把它留给编译器定义operator=时,它定义

c++ - 公共(public)算子新建,私有(private)算子删除 : getting C2248 "can not access private member" when using new

一个类有重载的操作符new和delete。new是公开的,delete是私有(private)的。在构造该类的实例时,出现以下错误:pFoo=newFoo(bar)example.cpp(1):错误C2248:'Foo:operatordelete':无法访问在类'Foo'中声明的私有(private)成员但是这里没有调用delete,那么编译器扭曲的头脑中发生了什么?:)错误的原因是什么?是否可以在不借助成员CreateInstance函数的情况下解决问题? 最佳答案 当您执行newFoo()时,会发生两件事:首先调用operat

c++ - 公共(public)算子新建,私有(private)算子删除 : getting C2248 "can not access private member" when using new

一个类有重载的操作符new和delete。new是公开的,delete是私有(private)的。在构造该类的实例时,出现以下错误:pFoo=newFoo(bar)example.cpp(1):错误C2248:'Foo:operatordelete':无法访问在类'Foo'中声明的私有(private)成员但是这里没有调用delete,那么编译器扭曲的头脑中发生了什么?:)错误的原因是什么?是否可以在不借助成员CreateInstance函数的情况下解决问题? 最佳答案 当您执行newFoo()时,会发生两件事:首先调用operat

c++ - 结构体的高效简单的比较运算符

我目前正在处理的应用程序有大量结构,其中包含从各种来源(如数据库和文件)输入的数据。比如这样:structA{floatval1;std::stringval2;intval3;booloperator为了进行处理,这些结构存储在STL容器中,例如映射,因此需要一个比较运算符。这些都是相同的,使用简单的bool逻辑可以这样写:boolA:operator这看起来很有效,但有几个缺点:如果结构为十几个或更多成员,这些表达式会变得很大。如果成员发生变化,编写和维护很麻烦。需要为每个结构单独完成。有没有更易于维护的方法来比较这样的结构? 最佳答案

c++ - 结构体的高效简单的比较运算符

我目前正在处理的应用程序有大量结构,其中包含从各种来源(如数据库和文件)输入的数据。比如这样:structA{floatval1;std::stringval2;intval3;booloperator为了进行处理,这些结构存储在STL容器中,例如映射,因此需要一个比较运算符。这些都是相同的,使用简单的bool逻辑可以这样写:boolA:operator这看起来很有效,但有几个缺点:如果结构为十几个或更多成员,这些表达式会变得很大。如果成员发生变化,编写和维护很麻烦。需要为每个结构单独完成。有没有更易于维护的方法来比较这样的结构? 最佳答案

C# null 合并运算符等效于 c++

C#空合并运算符是否有C++等价物?我在我的代码中做了太多的空检查。所以一直在寻找一种方法来减少空代码的数量。 最佳答案 我刚刚发现:The??operatorakatheNullCoalescingOperatorYoualsohaveitinC/C++asaGNUextensionusingthe?:operator:stringpageTitle=getTitle()?:"DefaultTitle"; 关于C#null合并运算符等效于c++,我们在StackOverflow上找到一