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被销毁?为什么外面的注释指令无效?
您的代码完全有效.
*colorPtr = BLUE;
Run Code Online (Sandbox Code Playgroud)
将值复制BLUE到指向的对象中.在这种情况下color,它是一个成员,Button因此保证在Button对象被销毁之前存在.
注意
void setToBlue() {
color = BLUE;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下完全相同.
要回答你的编辑:
为什么外面的注释指令无效?
因为运营商的->做法与之相同(*colorPtr)..该.运营商成员访问运算符,枚举没有任何成员访问,因此它没有任何意义.