我在C++方面很菜,那么返回对象的更好方法是什么?我来自脚本世界,在那里对象总是引用,并且正试图实现相同的概念...我基于当在C ++中传递引用和指针时使用什么样的情况?,其中一位用户说:“一个好的经验法则是:'尽可能使用引用,有必要时再使用指针'。”
// basic layer class
class Layer { private: Channel channel; // NEVER NULL };
// return object by pointer
Channel *Layer::getChannel() {
return &channel;
};
// return by reference
Channel& Layer::getChannel() {
return channel;
};
第二个版本的问题在于编译器会接受这一行代码:Channel channel = layer.getChannel(); // creates a copy BAD
应该是:
Channel &channel = layer.getChannel(); // reference good
有没有办法强制第二个选项的调用者不创建新渠道,或者第一种选项总是更好的,即使它永远不会为NULL?