Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “全球运营商”-&燃气轮机&引用;过载C++;_C++_Operator Overloading - Fatal编程技术网

C++ “全球运营商”-&燃气轮机&引用;过载C++;

C++ “全球运营商”-&燃气轮机&引用;过载C++;,c++,operator-overloading,C++,Operator Overloading,我想为指针全局重载“->”运算符。可能吗 A *var1 = new A(21); int x = var1->someInt; 在该代码中,它必须在到达“var1”的“someInt”变量时触发 实际上,我正在尝试在到达指针的成员之前检查指针。另外,我试图在一个书面代码上实现这个系统,所以我不想在实际代码中做太多更改。如C++17标准草案第16.5.6节(重点部分)所述: 操作员功能应为非静态成员功能或 是一个非成员函数,至少有一个参数的类型为 是类、对类的引用、枚举或对 枚举 因此,

我想为指针全局重载“->”运算符。可能吗

A *var1 = new A(21);
int x = var1->someInt;
在该代码中,它必须在到达“var1”的“someInt”变量时触发


实际上,我正在尝试在到达指针的成员之前检查指针。另外,我试图在一个书面代码上实现这个系统,所以我不想在实际代码中做太多更改。

如C++17标准草案第16.5.6节(重点部分)所述:

操作员功能应为非静态成员功能或 是一个非成员函数,至少有一个参数的类型为 是类、对类的引用、枚举或对 枚举


因此,不可能重载不带任何参数的运算符。

如C++17标准草案第16.5.6节(重点部分)所述:

操作员功能应为非静态成员功能或 是一个非成员函数,至少有一个参数的类型为 是类、对类的引用、枚举或对 枚举

因此,不可能重载不带任何参数的运算符

我想全局重载“->”运算符。可能吗

A *var1 = new A(21);
int x = var1->someInt;
不,这是不可能的

也许您可以在库或程序中定义一个“root”类(它将定义该操作符
->
),并让您的所有类从中继承

顺便说一句,我不确定您是否能够在所有情况下(包括任何类类型的有效自动变量的地址)高效地定义
isPointerValid
函数

在许多情况下,您无法定义此类函数(例如,类型中使用的
联合
-s;您不容易知道联合的哪个成员当前处于活动状态。任意强制转换;…)

对于现有的代码和类,
->
(通常不能重新定义)的内置含义已经用于使用它们编译代码

我想全局重载“->”运算符。可能吗

A *var1 = new A(21);
int x = var1->someInt;
不,这是不可能的

也许您可以在库或程序中定义一个“root”类(它将定义该操作符
->
),并让您的所有类从中继承

顺便说一句,我不确定您是否能够在所有情况下(包括任何类类型的有效自动变量的地址)高效地定义
isPointerValid
函数

在许多情况下,您无法定义此类函数(例如,类型中使用的
联合
-s;您不容易知道联合的哪个成员当前处于活动状态。任意强制转换;…)


对于现有代码和类,
->
(通常不能重新定义)的内置含义已经用于使用它们编译代码。

应该告诉您需要了解的内容。逻辑地思考它也可以回答您的问题(如果没有对象,对象成员访问操作符如何工作?)。您希望该操作符在不使用任何参数的情况下做什么?如果我没记错,语言定义要求
操作符->
成为成员函数。应该告诉你你需要知道的。从逻辑上考虑它也可以回答您的问题(如果没有对象,对象成员访问操作符如何工作?)。您希望该操作符在不带任何参数的情况下做什么?如果我没记错,语言定义要求
操作符->
作为成员函数。好主意,声明根类,但是我试图在一个书面代码上使用这个系统。所以我不能改变那么多。这应该进入你的问题(这是不可能的)。您需要改进您的问题,以便更多地解释真正的动机和上下文。好主意,声明一个根类,但我尝试在编写的代码中使用这个系统。所以我不能改变那么多。这应该进入你的问题(这是不可能的)。你需要改进你的问题,以便更多地解释真正的动机和背景。