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

Declaring class variables after assigning them values in C++

本文关键字:类变量 赋值 声明 C++      更新时间:2023-10-16

这里有一个名为Shape 的类

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

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

基本上,该语言的工作方式就好像是一个内联成员函数定义的类,由编译器重写为

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函数或函数集。

  • CCD_ 5数据通常不是一个好主意。默认情况下,将其设为publicprivate,除非您有充分的理由。

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

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