指定给指针的值的存储持续时间

use*_*903 1 c++ enums pointers class

给出以下课程:

class Button {

public:

   enum Color{RED, GREEN, BLUE};
   Color color = RED;

   void setToBlue() {
      Color* colorPtr = &color;
      *colorPtr = BLUE;
      //colorPtr->BLUE;
   }

}
Run Code Online (Sandbox Code Playgroud)

如果我打电话setToBlue(),BLUE直到被销毁才会Button被销毁?为什么外面的注释指令无效?

Som*_*ken 5

您的代码完全有效.

*colorPtr = BLUE;
Run Code Online (Sandbox Code Playgroud)

将值复制BLUE到指向的对象中.在这种情况下color,它是一个成员,Button因此保证在Button对象被销毁之前存在.

注意

   void setToBlue() {
      color = BLUE;
   }
Run Code Online (Sandbox Code Playgroud)

在这种情况下完全相同.

要回答你的编辑:

为什么外面的注释指令无效?

因为运营商的->做法与之相同(*colorPtr)..该.运营商成员访问运算符,枚举没有任何成员访问,因此它没有任何意义.