C++ POD初始化

标签 c++

我读过 C++ 中的 POD 对象。我想将 POD 结构写入文件。所以它应该只有公共(public)数据,没有 ctors/dtors 等。但据我所知,它可以有静态功能。那么我可以在这里使用“命名构造函数惯用语”吗?我需要动态初始化,但我不想在每个结构初始化时重复检查参数 这是一个简单的例子(它只是简单的例子,不是工作代码):

struct A
{
  int day;
  int mouth;
  int year;

   static A MakeA(const int day, const int month, const int year)
   {  
      // some simple arguments chech
      if ( !(day >= 1 && day <= 31) || !(month >=1 && month <=12) || !(year <= 2010) )
         throw std::exception();

      A result;
      result.day = day;
      result.month = month;
      result.year = year;
      return result;
   }
};

所以我有某种构造函数和 POD 结构,我可以简单地将其写入文件?它正确吗?

最佳答案

那应该没问题。

你甚至可以有一个非静态成员函数(只要它们不是虚拟的)

你不能拥有自动调用的东西(比如ctor/dtor)。您明确调用的东西没问题。

关于C++ POD初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3603224/

相关文章:

c++ - C++中 volatile 指针数组的声明

c++ - 如何使用 std::bind 编译 C++ 程序?

c++ - 查找 For 循环数组 C++ 中最大和最小值的值

c++ - 跨平台错误信息

c++ - 顺时针旋转 2D 矩阵时简化代码以避免 TLE

c++ - 如何在相关数据结构中存储 JSON 键值(我用 cpp boost 解析过)?

c++ - 在 C++ 中,函数 void foo(int** p) 有什么用?

c++ - co_await 之后当前处理的异常是什么?

C++ getline() 跳过空字符串

c++ - 我该如何修复错误 : conversion from ‘void’ to non-scalar type ‘std::vector<int>’ requested