C++ -&燃气轮机;if(c+;+;)中的运算符 用于访问由指针指向的结构或类的成员。 让我们假设我们的类看起来像这样 class Foo { public: void C1(int numbers); }; class Bar { public: Foo* B1; //pointer to B1 object. };
我很难理解这句简单的话。 你能给我提个建议吗? 我猜,它说,如果指针A1分配给B1(真),那么指针A1分配给B1,B分配给函数C1,对吗?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. }; 我们还假设在代
感谢您的帮助您的代码中有一个类或结构。与
不同,运算符->
用于访问由指针指向的结构或类的成员。
让我们假设我们的类看起来像这样
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
的成员。如果“->”
操作符周围没有”->(空格)
,操作符的可能重复,则可读性更高