gpt4 book ai didi

c++ - 提供非常量引用 getter 是否有意义

转载 作者:可可西里 更新时间:2023-11-01 18:28:49 27 4
gpt4 key购买 nike

有时我需要暴露一些类(class)成员。例如在下面的例子中 class Mechanic 可能需要直接访问 Engine 组件。由于多种原因,我已经多次读到所有字段都应该通过 mutator(访问器)方法访问。但是在提供非 const 引用 getter 时有什么优势吗:

class Car
{
public:
Engine & engine()
{
return m_engine;
}

//as a consequence you will also need to provide const version
const Engine & engine() const
{
return m_engine;
}

private:
Engine m_engine;
}

简单地公开引擎组件:

class Car
{
public:
Engine engine;
}

如果您不喜欢这个例子,您也可以将 public 替换为 protected。在现实生活中,当涉及到 System.inSystem.out 时,您在 Java 中有类似的东西。看起来,要完全符合某些人所说的,您需要执行类似 System.getInstance().getOut().println("hello world") 的调用。在这种情况下,除了大量官僚代码外,我看不到任何好处。

最佳答案

当您返回的值实际上在堆上时,它们会很有用。

template<class T> class Singleton
{
private:
static T* m_pSingleton;

public:
T& getSingleton() { assert(m_pSingleton); return(*m_pSingleton); };

}; // eo class Singleton

关于c++ - 提供非常量引用 getter 是否有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4113845/

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