我可以在不产生参考存储成本的情况下对变量进行别名吗?

Sam*_*rsa 8 c++ alias

如果我有以下代码:

struct someStruct
{
  int x;
  int y;
}

class someClass
{
  public:
    someStruct m_member;

    alias      m_x = m_member.x; // I am aware alias is not a keyword and even if it was, I cannot assign it a value like this
    alias      m_y = m_member.y; // I am aware alias is not a keyword and even if it was, I cannot assign it a value like this
}
Run Code Online (Sandbox Code Playgroud)

我是否可以给出别名m_member.xm_member.y不会产生额外的参考存储成本(与指针相同)?类似于typedef的东西?

cel*_*chk 10

您可以编写内联访问功能:

class someClass
{
public:
  someStruct m_member;
  int& mx() { return m_member.x; }
  int& my() { return m_member.y; }
  int const& mx() const { return m_member.x; }
  int const& my() const { return m_member.y; }
};
Run Code Online (Sandbox Code Playgroud)

然后您可以按如下方式访问成员:

someClass foo;
foo.mx() = 3;
foo.my() = 2*foo.mx();
Run Code Online (Sandbox Code Playgroud)

它不是完全相同的语法,但接近,一个相当不错的编译器将完全优化内联函数.

  • +1,但也应该有`const`版本. (2认同)