在 C++ 中使用 THIS 指针将对象写入文件

Writing object to a file using THIS pointer in c++

所以我有这段代码,其中有一个 Car 的 class,它有一个名为 save 的成员函数,它使用 THIS 指针将对象保存到一个文件中。我还有主要功能,我正在将 Car 对象写入另一个文件,但该对象保持不变,但是当在记事本中打开两个保存的文件时,它们看起来不同为什么??...

 #include <iostream>
#include <fstream>
#include <string>

using namespace std;

class Car
{
private:
  string name;
  int model;
  int numwheels;
public:
  Car()
  {
    name = "No Name";
    model = 0;
    numwheels = 0;
  }
  void save()
  {
    ofstream ofs;

    ofs.open("filename.txt", ios::out | ios::app);
    ofs.write((char*)this, sizeof(this));
  }
};

int main()
{
  Car car;

  //writing object...
  car.save();

  ofstream ofs;

  ofs.open("filename1.txt", ios::out | ios::app);
  ofs.write((char*)&car, sizeof(car));
}

此 link 有一张显示结果的图片....

https://i.stack.imgur.com/GAyxu.png

sizeof(this) 是指针的大小 Car*,根据 32 位或 64 位平台,为 4 或 8。因此,您输出对象内存的前 4 或 8 个字节,您可以在图像中看到它。要获取对象大小,您应该使用 sizeof(*this)sizeof(Car).