Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.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++ -&燃气轮机;if(c+;+;)中的运算符 用于访问由指针指向的结构或类的成员。 让我们假设我们的类看起来像这样 class Foo { public: void C1(int numbers); }; class Bar { public: Foo* B1; //pointer to B1 object. };_C++_Pointers_If Statement - Fatal编程技术网

C++ -&燃气轮机;if(c+;+;)中的运算符 用于访问由指针指向的结构或类的成员。 让我们假设我们的类看起来像这样 class Foo { public: void C1(int numbers); }; class Bar { public: Foo* B1; //pointer to B1 object. };

C++ -&燃气轮机;if(c+;+;)中的运算符 用于访问由指针指向的结构或类的成员。 让我们假设我们的类看起来像这样 class Foo { public: void C1(int numbers); }; class Bar { public: Foo* B1; //pointer to B1 object. };,c++,pointers,if-statement,C++,Pointers,If Statement,我很难理解这句简单的话。 你能给我提个建议吗? 我猜,它说,如果指针A1分配给B1(真),那么指针A1分配给B1,B分配给函数C1,对吗? 感谢您的帮助您的代码中有一个类或结构。与不同,运算符->用于访问由指针指向的结构或类的成员。 让我们假设我们的类看起来像这样 class Foo { public: void C1(int numbers); }; class Bar { public: Foo* B1; //pointer to B1 object. }; 我们还假设在代

我很难理解这句简单的话。 你能给我提个建议吗? 我猜,它说,如果指针A1分配给B1(真),那么指针A1分配给B1,B分配给函数C1,对吗?
感谢您的帮助

您的代码中有一个类或结构。与
不同,运算符
->
用于访问由指针指向的结构或类的成员。 让我们假设我们的类看起来像这样

class Foo
{
public:
  void C1(int numbers);
};

class Bar
{
public:
  Foo* B1;    //pointer to B1 object.
};
我们还假设在代码的某个地方声明了一个指针,并尝试访问指针所指向的对象的成员

Foo* myFoo; //pointer myFoo is declared. 
myFoo->C1; //trying to access C1 function what  myFoo is pointing at.
在上面的示例中,我们试图使用
->
访问myFoo的成员。问题是虽然myFoo没有指向任何东西。。我们只声明了指针,但没有分配给任何特定
Foo
对象的地址。因此,使用
->
运算符访问指针成员将导致未定义的行为。因此,为了解决代码中可能出现的这个问题,我们可以在访问myFoo的成员之前使用nullptr检查来保护myFoo

Foo* myFoo = nullptr;
我们现在可以检查myFoo是否有效

if(myFoo)
   myFoo->C1(1); //if its valid call the C1 function.
上述代码仅在myFoo有效时访问myFoo的成员

回到你的例子,我们现在可以假设发生了什么

       if(A1->B1) //check if the B1 pointer of the A1 is valid.
          A1->B1->C1(3); //if it is valid, call the C1 function of the object B1 pointing to.

这相当于编写
如果(A1->B1!=nullptr)
这意味着如果
A1->B1
不为null,则调用
C1
,它是
A1->B1
的成员。如果
“->”
操作符周围没有
”->(空格)
,操作符的可能重复,则可读性更高