Alt text:

Image that says:

HOLY SHIT!! IS THAT A MOTHERF*CKING C++ REFERENCE???

int& a = b;

  • Sonotsugipaa@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    3
    ·
    6 个月前

    I don’t think references are variables: you can’t modify them, and AFAIR you can’t have pointers to them, with the possible but unlikely exception of non-static member references.

    • TheEntity@lemmy.world
      link
      fedilink
      arrow-up
      6
      ·
      6 个月前

      An int& reference is just as much of a variable as int* const would be (a const pointer to a non-const int). “Variable” might be a misnomer here, but it takes just as much memory as any other pointer.

    • Ethan@programming.dev
      link
      fedilink
      English
      arrow-up
      4
      ·
      6 个月前

      For references within a scope, you’re probably right. For references that cross scope boundaries (i.e. function parameters), they necessarily must consume memory (or a register). Passing a parameter to a function call consumes memory or a register by definition. If a function call is inlined, that means its instructions are copy-pasted to the call location so there’s no actual call in the compiled code.