为什么不能创建空类的 const 对象

发布于 2024-10-24 08:19:22 字数 373 浏览 1 评论 0原文

#include <iostream>

class A {
   public:
      void foo() const {
          std::cout << "const version of foo" << std::endl;
      }
      void foo() {
          std::cout << "none const version of foo" << std::endl;
      }
};

int main()
{
  A a;
  const A ac;
  a.foo();
  ac.foo();
}

上面的代码无法编译,谁能告诉我为什么吗?

#include <iostream>

class A {
   public:
      void foo() const {
          std::cout << "const version of foo" << std::endl;
      }
      void foo() {
          std::cout << "none const version of foo" << std::endl;
      }
};

int main()
{
  A a;
  const A ac;
  a.foo();
  ac.foo();
}

The above code can't be compiled, could anyone of you tell me why?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一身骄傲 2024-10-31 08:19:22

你需要初始化它。 这是规范的一个已知问题

You need to initialize it. This is a known problem with the spec.

不乱于心 2024-10-31 08:19:22

将其初始化为:

const A ac = A();

工作代码: http://www.ideone.com/SYPO9


顺便说一句,这是 <强>不初始化:const A ac(); //欺骗性 - 不是初始化!

Initialize it as:

const A ac = A();

Working code : http://www.ideone.com/SYPO9


BTW, this is not initializaiton : const A ac(); //deceptive - not an initializaiton!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文