[英]Is there a way to identify the const modifier of the variable in run-time?
[英]Using variable with public const modifier
我想在我的类中有一个变量,当从public
作用域访问时为const
,而从private
或受保护范围访问时为非const
。 我想避免使用一种getter方法来返回对该变量的const引用。 我尝试弄乱using
关键字,但到目前为止没有成功。 理想情况下,它看起来像这样:
class Foo
{
public:
using var = const m_var; // This is of course gibberish
private:
int m_var;
}
我可以添加一个公共的const引用成员变量,并使其指向私有变量,但是那样,我的类将增加4个字节,这是我想避免的。 编译器会意识到这一点并优化参考吗?
关于如何解决问题还有其他想法吗?
我想避免使用getter方法来返回对变量的const引用
我不知道您为什么要避免这种情况。 这听起来像是您想要的(也许只是返回按值):
class Foo
{
public:
int getVar() const { return m_var; }
protected:
int m_var;
};
如果您具有对Foo
protected
或private
访问,则只需m_var
。 如果不这样做,那么您将拥有一个公共const getVar()
,该常量getVar()
您对其进行修改。
确实没有其他方法可以做到这一点。 您不能像使用const
-qualification或ref-qualification那样重载访问权限,因为重载解析发生在访问检查之前。 那会禁止您执行protected
public
过载之类的事情,而protected
过载更适合。
您也不能在不引入实际引用的情况下为变量添加别名-但那时候您是在扩大类的大小,但是无论如何仍在使用不同的名称来引用public
和protected
,此时使用public访问器成员函数是严格更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.