在C ++中为它们赋值后声明类变量

时间:2016-05-06 18:37:39

标签: c++

这里有一个名为Shape

的课程
class Shape 
{
   public:
      void setWidth(int w)
      {
         width = w;
      }
      void setHeight(int h)
      {
         height = h;
      }
   protected:
      int width;
      int height;
};

它编译得很好,但即使我之前没有声明它,我甚至可以分配widthheight值?编译器在这一点上如何知道它们是什么?

2 个答案:

答案 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数据通常不是一个好主意。除非您有充分的理由,否则默认设置为publicprivate

答案 1 :(得分:0)

在函数中,您需要在使用它之前声明变量。

类变量不需要这样做。实际上,对于直接在类中定义的变量和函数,顺序根本不重要。有趣的是,对于类中定义的类型,情况并非如此。