c ++常量如何使它们工作

meW*_*arn 0 c++ oop const

到目前为止,我已经使用DEFINE来声明我的常量.它完美无缺.

我试图在我的类中使用c ++ const关键字,但它给出了编译时错误

  class User{

  public:
     User::User();
  protected:
       const float DATA_Z;

   }
Run Code Online (Sandbox Code Playgroud)

.CPP

 User::User(){

         DATA_Z = 0.0023f;

  }
Run Code Online (Sandbox Code Playgroud)

这是它产生的错误

错误3错误C2758:'User :: DATA_Z':必须在构造函数base/member初始化列表中初始化

如何为其分配数据,以及如何在课堂上使用它们.

awe*_*oon 5

错误消息非常清楚.将分配移动到初始化列表:

User::User(): DATA_Z(0.0023f)
{

}
Run Code Online (Sandbox Code Playgroud)


Joe*_*e Z 5

你想这样做:

User::User() : DATA_Z(0.0023f) 
{
    // body of constructor
}
Run Code Online (Sandbox Code Playgroud)

常量成员需要在初始化列表中初始化,因为它们不能直接分配.对于引用类型的成员也是如此,因为您无法更改引用变量的引用.