gpt4 book ai didi

c++ const 成员函数,返回一个 const 指针。但是返回的指针是什么类型的 const?

转载 作者:IT老高 更新时间:2023-10-28 12:32:49 28 4
gpt4 key购买 nike

如果有人问过这个问题,我深表歉意,但是如何在 C++ 中创建一个返回以下场景中的指针的成员函数:1.返回的指针是常量,但是里面的垃圾是可以修改的。2.里面的垃圾是常量,但是返回的指针可以修改。3. 垃圾和指针都不能修改。

是这样吗:

  1. int *const func() const
  2. const int* func() const
  3. const int * const func() const

我读过的所有教程都没有涵盖这种区别。

旁注:如果我的方法被声明为 const ,那么教程会说我不会修改参数。但是在参数是指针的情况下,这对我来说还不够清楚。我的参数是否需要像:

一个。 void func(const int* const x) const;
湾。 void func(const int* x) const;
C。 void func(const int* const x) const;

最佳答案

我不知道你读过什么书,但如果你将方法标记为 const,则意味着 this 的类型将是 const MyClass* 而不是 MyClass*,这又意味着您不能更改未声明 mutable 的非静态数据成员,也不能在 this 上调用任何非 const 方法>.

现在是返回值。

1 . int * const func () const

函数是常量,返回的指针是常量,但“垃圾内部”可以修改。但是,我认为返回 const 指针没有意义,因为最终的函数调用将是一个右值,并且非类类型的右值不能是 const,这意味着 const 将无论如何都会被忽略

2 。 const int* func () const

这是一个有用的东西。 “里面的垃圾”不能修改

3 . const int * const func() const

由于1中的原因,语义上与2几乎相同。

HTH

关于c++ const 成员函数,返回一个 const 指针。但是返回的指针是什么类型的 const?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3888470/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com