C ++如何从类变量返回一个const对象

时间:2014-05-16 23:37:32

标签: c++ return const

所以我有一个名为MusicComposer的类,它有一个AudioSignal对象作为名为music的数据成员。音乐是非常态的。但是,我需要在一个名为getMusic的方法中将音乐作为const AudioSignal返回。

在源文件中:

const AudioSignal& MusicComposer::getMusic(){

}

音乐声明为:

AudioSignal music;

^这是在头文件中。

我将音乐声明为非const,因为音乐需要在getMusic方法返回之前进行更改。但是,我无法弄清楚如何返回它的const版本。如何返回const版本的音乐?

2 个答案:

答案 0 :(得分:2)

C ++可以随时自动将mutable更改为const。没什么大不了的。它采用其他的方式很难。

return music;

如果确实希望明确表示你可以做到这一点,但它的代码很奇怪,而且很糟糕。

return static_cast<const AudioSignal&>(music);

此外,Cyber​​观察到getter方法本身通常是const,即使MusicComposerconst,也可以调用它们。

const AudioSignal& MusicComposer::getMusic() const {
                                             ^^^^^

答案 1 :(得分:1)

看看这个例子:

#include <iostream>

class A { // declare class A
  int integer;
};

class B { // declare class B
 public:
  const A& get() { // get() will return a const ref
    return a;      // here it is returning the ref of data member a
  }
 private:
  A a;
};

int main() {
  A a;
  B b;
  a = b.get();

  return 0;
}

如potatoswatter所述,

const是访问对象的表达式的属性,而不是对象本身