首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使c++常量工作

如何使c++常量工作
EN

Stack Overflow用户
提问于 2013-12-08 16:53:40
回答 4查看 58关注 0票数 0

到目前为止,我已经使用了定义来声明我的常量。而且效果很好。

我试图在类中使用c++ const关键字,但它会导致编译时错误。

标题

代码语言:javascript
复制
  class User{

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

   }

.CPP

代码语言:javascript
复制
 User::User(){

         DATA_Z = 0.0023f;

  }

这是它生成的错误。

错误3错误C2758:'User::DATA_Z‘:必须在构造函数基/成员初始化程序列表中初始化

如何将数据分配给它,以及如何在我的类中使用它们。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-08 16:58:12

你想要这样做:

代码语言:javascript
复制
User::User() : DATA_Z(0.0023f) 
{
    // body of constructor
}

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

票数 4
EN

Stack Overflow用户

发布于 2013-12-08 16:58:04

错误信息非常清楚。将赋值移到初始化程序列表中:

代码语言:javascript
复制
User::User(): DATA_Z(0.0023f)
{

}
票数 5
EN

Stack Overflow用户

发布于 2013-12-08 17:14:47

要简单地替换使用#define定义的清单常量,请编写全局const

代码语言:javascript
复制
#define DATA_Z 0.0023f

变成了

代码语言:javascript
复制
const float DATA_Z = 0.0023f;

将常量放入类中意味着您可以在每个对象中有不同的值,这就是为什么其他答案告诉您在构造函数中初始化它。这是一个合理的设计决策,但它与将值定义为宏的不同。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20456044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档