这里有一个名为Shape
class Shape
{
public:
void setWidth(int w)
{
width = w;
}
void setHeight(int h)
{
height = h;
}
protected:
int width;
int height;
};
它编译得很好,但即使我之前没有声明它,我甚至可以分配width
和height
值?编译器在这一点上如何知道它们是什么?
答案 0 :(得分:4)
基本上该语言就好像具有成员函数定义内联的类一样,由编译器重写为
class Shape
{
public:
void setWidth(int w);
void setHeight(int h);
protected:
int width;
int height;
};
inline void Shape::setWidth(int w)
{
width = w;
}
inline void Shape::setHeight(int h)
{
height = h;
}
这一般具有很强的解释力,但是,抬头:它可能不一定是嵌套类的模型。
一般评论:
努力提供实用的界面。例如。如果设置形状的宽度或高度更新其屏幕显示,那么如果我想要更改两者,使用将导致两次屏幕更新的当前界面。
考虑做或检查的功能,而不是属性设置器,例如在这种情况下,resize
函数或一组函数。
protected
数据通常不是一个好主意。除非您有充分的理由,否则默认设置为public
或private
。
答案 1 :(得分:0)
在函数中,您需要在使用它之前声明变量。
类变量不需要这样做。实际上,对于直接在类中定义的变量和函数,顺序根本不重要。有趣的是,对于类中定义的类型,情况并非如此。