跳转至

C++ 对象和指针的区别学习笔记

对象

MyClass obj;
obj.fun();
obj.count = 10;

对象是类的实例,占据实际的内存空间,可以调用类的成员函数和访问类的成员变量。

对象大小 = 成员变量大小 + 对齐填充

指针

MyClass *p = new MyClass;
p->fun();
p->count = 10;

指针是一个变量,存储对象的地址,可以通过指针访问对象的成员函数和成员变量。

指针大小 = 4 字节(32 位系统)或 8 字节(64 位系统)

对象和指针的区别

  1. 内存管理
    • 对象:内存分配和释放通常是自动的(除非使用动态分配)。
    • 指针:指向的内存需要手动管理,尤其是动态分配的内存。
  2. 访问方式:
    • 对象:直接访问成员。
    • 指针:通过解引用访问成员(使用 -> 操作符)。
  3. 生命周期:
    • 对象:由作用域决定,局部对象在离开作用域时自动销毁。
    • 指针:生命周期由程序员控制,指针可以指向任何作用域的变量。