C++ 中的 memset 初始化

2024-04-28

memset 有时用于初始化构造函数中的数据,如下例所示。一般情况下有效吗?总的来说这是一个好主意吗?

class A {
public:
   A();
private:
   int a;
   float f;
   char str[35];
   long *lp;
};

A::A()
{
   memset(this, 0, sizeof(*this));
}

不要使用memset。它是 C 的遗留物,不适用于非 POD。具体来说,在包含任何虚函数的派生类上使用它——或者任何包含非内置函数的类——将导致灾难。

C++提供了特定的初始化语法:

class A {
public:
   A();
private:
   int a;
   float f;
   char str[35];
   long *lp;
};

A::A()
    : a(0), f(0), str(), lp(NULL)
{
}

老实说,我不确定,但是memset对于浮点来说也可能是一个坏主意,因为它们的格式未指定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 中的 memset 初始化 的相关文章

  • 在派生自 Control 的 ASP.NET 自定义控件中呈现自关闭标记

    我正在开发 Facebook FBML 控件库 并希望创建类似于 ASP NET WebControls 库的 FBML 控件 我有一个默认处理渲染的基类 这是我的渲染方法 protected override void Render Ht
  • 强制 const 存储返回的值 value

    这就是我想要实现的目标 struct test const test returnconst return test test returnnonconst return test int main test t1 returnnoncon
  • 如何在运行 ASP.NET 页面时以编程方式设置表格背景?

    我有一个 aspx 页面 其默认背景颜色是一种 当选择单选按钮的某个选项时 我需要能够以编程方式更改它 我尝试设置表的 ID 字段 但似乎无法在 C 代码隐藏文件中访问它 我原来的表是 table style width 100 backg
  • 实体框架 - sql server 表中未设置默认值

    SQL Server 2005 数据库表有一列 createdon 其默认值设置为 getdate 我正在尝试使用实体框架添加记录 createdon 列未更新 我是否错过了实体框架中的任何属性 请提出建议 这是实体框架存在的少数问题之一
  • 如何在 C++ 中的嵌套词法作用域可访问的作用域中声明静态信息?

    我想声明范围的标识符 该标识符将用于自动填充最内部范围内任何日志记录语句的字段 它们通常会 但并非总是如此 例如 lambda 使用 引入的块 匹配封闭块的 名称 用法看起来像这样 namespace app LOG CONTEXT app
  • 管理多个解决方案中存在的 C# 项目的 Nuget 包

    我现在正处于这样的阶段重构疯狂一个有很多的大项目遗留和不稳定的模块 我决定拆分解决方案目前 所有项目 大约有 20 个 而且由于下个月肯定会出现单元测试项目 还会有更多 链接在一起 使其更加独立和细化 通过这种方法 有一些模块 例如需要在多
  • iPhone 编程游戏

    使用 Objective C 还是 C 为 iPhone 编写游戏最好 像 Flight Control 这样的游戏会用什么语言编写 图形应采用什么格式才能在 iPhone 上正确显示并快速加载 像 Flight Control 这样的游戏
  • 如何使用 Regsvr32 注册 .NET COM DLL?

    我有一个使用 COM DLL 的 VB6 应用程序 该DLL是用C 编写的 在 C 项目属性中 我检查了 Register for COM interop 选项 VB6 应用程序在我的开发机器上运行良好 C 代码完全遵循以下格式 CodeP
  • 类型定义存在于两个库中

    我正在使用 NET 4 5 构建 ASP NET Web 窗体网站 错误 The type System ComponentModel DataAnnotations Schema ForeignKeyAttribute exists in
  • boost变体简单调用常用方法

    我有两个指针 只能设置其中之一 所以我正在考虑使用 boost variant 例如 boost variant
  • 将控制台输入和输出重定向到文本框

    您好 提前致谢 我正在尝试 非常努力 将控制台输入和输出重定向到文本框 到目前为止 输出工作正常 但问题在于输入 例如 我无法执行一个简单的程序来执行以下操作 Console WriteLine 请输入您的姓名 字符串名称 Console
  • 在浏览器中测试wcf服务

    我无法在浏览器中调用基本的 wcf web 方法 即使使用
  • 我使用 tm/mktime 是否错误,如果没有,有解决方法吗?

    我认为下面的程序应该输出从公元 1 年到 1970 年每年第一天到 1970 年的秒数 前面是time t在编译它的系统上 CHAR BIT是一个宏 所以我认为你不能只是复制编译后的可执行文件并假设它是正确的 尽管实际上一切都使用 8 位c
  • 允许使用 AutoMapper 或类似工具映射动态类型吗?

    我已经开始使用https github com robconery massive https github com robconery massive对于一个项目 我想知道是否有任何映射工具可以支持动态到静态类型的映射 我以前使用过 Au
  • 实例着色器矩阵的设置

    我想绘制实例立方体 我可以打电话GL DrawArraysInstanced PrimitiveType Triangles 0 36 2 成功地 我的问题是所有立方体都绘制在相同的位置和相同的旋转 我如何为每个立方体单独更改它 要创建不同
  • 以编程方式连接和断开 USB,“无需拔出和重新插入”

    我需要以编程方式连接和断开 USB 也就是说 我已经插入了USB设备 我需要使用 C NET 应用程序传输文件 该应用程序将监视特定文件夹并将文件从该文件夹传输到 USB 驱动器 我需要在文件传输后断开 USB 设备的连接 并在需要时连接
  • 为 winforms ComboBox 中的单个项目着色?

    我遇到了一个困境 我有一个表单 其中包含许多组合框 其中包含在某些情况下可能无效 过时的信息 选项 项目 我不能简单地从项目中删除过时的信息 但我确实想在选项无效时为用户提供视觉线索 我正在考虑对项目进行着色 可能是红色 来指示它们是否无效
  • Xamarin Forms:System.Reflection.TargetInitationException:调用目标已引发异常

    我正在为这个问题苦苦挣扎 我只是创建了一个简单的跨平台页面 这里是 XAML 代码
  • wpf中的图像问题(图像不显示)

    我不明白为什么我无法在 WPF 中显示图像 也许我不小心修改了我的资源文件夹 这就是我没有显示的原因 所以我创建了一个新的 wpf 应用程序 我有这个 当我运行该程序时 我的图片显示为 为什么当我尝试在程序中执行相同的操作时 图像没有显示
  • 将 Web 场迁移到 ASP.NET 运行时版本 4,同时保持会话

    我们已将 Web 应用程序从 net 运行时 2 v 3 5 迁移到 net 运行时 4 v 4 5 我有一个部署问题 我们的 sessionstate 服务器是一个 stateserver 并在单独的服务器上运行框架 2 中的 aspne

随机推荐

  • 登录时出现quickblox错误,android

    我正在使用 Quickblox 在 Android 平台上进行聊天 并使用 facebook 身份验证 我这样做这些步骤 1 QBSettings getInstance fastConfigInit 2 QBAuth createSess
  • 如何使用 Typhoon 为集成测试注入假的、存根的或模拟的依赖项

    我正在尝试使用 KIF 编写集成测试 我的问题是 如何为特定视图控制器注入存根 模拟或虚假依赖项 每个使用数据模型 http 客户端 存储管理器等依赖项的视图控制器都来自 ModelAssembly ApplicationAssembly
  • 在 ElasticSearch 7+ 中,如何搜索所有文本字段?

    我想在 Elasticsearch 7 3 中存储的文档中搜索单词 我希望在以前版本的 Elasticsearch 上运行的一个示例是 query bool must match all oliver must not should fro
  • NodeJs util.promisify 不是一个函数

    我正在尝试 promisify mysql 函数 但是当我运行它时 控制台显示此错误util Promisify is not a function 这是我的代码 var util require util var mysql requir
  • 在 R 中查找 Twitter 关注者

    我想使用 R 查找用户的 Twitter 关注者的个人资料 关注者 gt 100000 尽管 twitteR 是一个很棒的软件包 但它在处理大量关注者时存在问题 因为人们需要实施睡眠例程以避免超过速率限制 我是一个相对新手 想知道如何循环遍
  • Python中如何从另一个函数调用一个函数内的函数? [复制]

    这个问题在这里已经有答案了 我已经在 python 中的另一个函数中定义了一个函数 现在我想调用内部函数 在Python中这可能吗 我怎么打电话func2 from func3 def func1 def func2 print Hello
  • 以正确的顺序添加 XML 元素

    我想添加元素到X文档 https msdn microsoft com de de library system xml linq xdocument 28v vs 110 29 aspx我想要构建的 XML 对象和元素的顺序是在 XSD
  • PHP-访问类的所有函数中的全局变量[重复]

    这个问题在这里已经有答案了 我需要在类的大多数函数中访问外部 php 文件的一些变量 我正在通过以下方式访问 并且工作正常 class test function a global myglobalvar function b global
  • javascript设置间隔作为单独的线程运行?

    我想使用计时器作为后备 以防我最终陷入无限循环 看来设置间隔是执行此操作的正确方法 但是 它对我不起作用 根据我的研究 setInterval 似乎应该在后台的单独线程中运行 但我没有看到它 为什么会发生这种行为 我该如何解决这个问题 va
  • 在 JSON-LD 中创建产品数组

    有人能发现我下面的代码有什么问题吗 它不会在 Google 结构化测试工具中进行验证 我正在尝试创建 JSON LD 代码以添加到具有多种待售产品的页面
  • Java中的逆向正则表达式

    Java中如何反转正则表达式 例如 ab de gt ed ba wow 您需要为正则表达式构建一个解析器并反转所有标记 部分 在这种情况下 ab de 是 a b d e 并反转这是 e d b a 现在想象一下群体 ab de 相反的是
  • 正则表达式没有方法测试[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 ATM机允许4 或 6 位数字PIN 码和 PIN 码不能包含任何内容 但exactly 4 位数字或恰好 6 位数字 如果函数传
  • 如何在当前打开的文件中保存 VSTO 加载项的选项?

    我正在为 Powerpoint 2010 构建 VSTO 外接程序 并且外接程序设置的选项适用于当前打开的文件 而不是每个用户的配置 我可以将这些选项保存在当前文件中 我的意思是 将自定义 XML 添加到 PPTX 文件中 吗 如果是这样
  • C# 语法高亮着色

    我可以像在 Visual Studio 中一样单独更改字段 局部变量的颜色吗 下面是 Visual Studio 中的样子 字段变量赋值 读写为绿色 局部变量赋值 读写为白色 但在 VSCode 中 本地变量和字段变量的范围都是 varia
  • NextAuth 登录未触发我的凭据提供程序中的授权方法

    我正在开发一个 Next js 项目 使用 NextAuth 进行身份验证 我遇到一个问题 登录组件中对 SignIn 的调用似乎没有触发我的凭据提供程序中的授权方法 以下是我的 nextauth js 文件的摘录 CredentialsP
  • 如何在.Net Console App中设置默认输入值?

    如何在 net 控制台应用程序中设置默认输入值 这是一些虚构的代码 Console Write Enter weekly cost string input Console ReadLine 135 135 is the default T
  • Azure Functions - 使用具有托管标识的队列触发器

    我正在尝试将托管标识与 Azure Functions V3 和 QueueTrigger 结合使用 函数代码定义如下 Function ProcessUserData public async Task ProcessUserData Q
  • C 中的可移植函数(无汇编)返回其堆栈帧的大小

    用 C 编写一个可移植函数 无需汇编 返回其堆栈帧的大小 int stackframe size 尝试如下解决 该函数在使用 VS 2010 编译时返回 228 字节 有没有办法验证其正确性 int stackframe size int
  • 无需 root 即可安装 Jekyll

    我想在共享服务器上建立一个 jekyll 博客 当我尝试安装 Jekyll 时 我收到 您没有写入权限 如何在没有 root 或 sudo 的情况下解决这个问题 更多详情 我在共享服务器上有空间 但没有 root 访问权限 我无法安装 Ru
  • C++ 中的 memset 初始化

    memset 有时用于初始化构造函数中的数据 如下例所示 一般情况下有效吗 总的来说这是一个好主意吗 class A public A private int a float f char str 35 long lp A A memset