【问题标题】:difference in memory storage of pointer and reference member varible指针和引用成员变量的内存存储区别
【发布时间】:2021-06-25 05:32:28
【问题描述】:

引用和指针成员变量持有的内存有什么区别?

假设我有一个类 A 和一个类 B。A 类有一个成员变量作为引用,而 B 类有一个成员变量作为指向外部对象的指针。

每个班级的规模会有什么不同?当需要创建 1000 个 A/B 类对象时,哪个更好?

【问题讨论】:

  • 虽然标准没有要求,但大多数编译器使用指针实现引用。
  • 使用sizeofAB 实例进行检查?请记住,如果您需要使用指针或引用,还需要考虑其他事项,并且大小很少成为问题(除非您在内存严重受限的系统上)。此外,现在应该很少使用原始的非拥有指针,而是使用智能指针,如 std::unique_ptrstd::shared_ptr(或 std::weak_ptr,具体取决于用例)。
  • 请注意,对于引用非静态成员,编译器不会自动生成赋值运算符。这可能会阻碍,例如,将实例放入 std::vector

标签: c++ pointers reference


【解决方案1】:

引用和指针成员变量持有的内存有什么区别?

不同的是,引用成员必须在构造函数中初始化,而对于指针成员变量,我们可以不初始化。

通常,GCC 和 Clang 等编译器将引用视为与指针相同。所以存储大小是一样的:sizeof(char*)

【讨论】:

    猜你喜欢
    • 2018-05-05
    • 1970-01-01
    • 2016-05-03
    • 2015-02-15
    • 2017-08-31
    • 1970-01-01
    • 2022-10-16
    • 1970-01-01
    • 2017-05-03
    相关资源
    最近更新 更多