何时在 C++ 中使用指针

2024-01-02

我刚刚开始学习C++中的指针,我不太确定何时使用指针,何时使用实际对象。

例如,在我的一项作业中,我们必须构造一个 gPolyline 类,其中每个点都由一个 gVector 定义。现在,我的 gPolyline 类变量如下所示:

private:
vector<gVector3*> points;

如果我有矢量 点相反,这会有什么不同呢?另外,是否有关于何时使用指针的一般经验法则?提前致谢!


一般的经验法则是在需要时使用指针,在可以时使用值或引用。

如果你使用vector<gVector3>插入元素将复制这些元素,并且这些元素将不再与您插入的项目连接。当您存储指针时,向量仅引用您插入的对象。

因此,如果您希望多个向量共享相同的元素,以便元素的更改反映在所有向量中,则需要向量包含指针。如果您不需要此类功能,那么存储值通常会更好,例如,它可以让您不必担心何时删除所有这些指向的对象。

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

何时在 C++ 中使用指针 的相关文章

  • SharpZipLib - 将文件夹/目录添加到 zip 存档

    通过示例 我很好地掌握了如何提取 zip 文件 几乎在每个示例中 识别 ZipEntry 是否为目录的方法如下 string directoryName Path GetDirectoryName theEntry Name string
  • 获取 std::variant 当前持有的 typeid(如 boost::variant type())

    我已经从 boost variant 迁移到 std variant 但遇到了障碍 我在 boost type 中使用了一个很好的函数 它可以让你获取当前持有的 typeid 看https www boost org doc libs 1
  • 找到的程序集的清单定义与程序集引用不匹配

    我试图在 C Windows 窗体应用程序 Visual Studio 2005 中运行一些单元测试 但出现以下错误 System IO FileLoadException 无法加载文件或程序集 实用程序 版本 1 2 0 200 文化 中
  • 无法从 Web api POST 读取正文数据

    我正在尝试从新的 Asp Net Web Api 中的请求中提取一些数据 我有一个像这样的处理程序设置 public class MyTestHandler DelegatingHandler protected override Syst
  • 如何在编译C代码时禁用警告?

    我正在使用 32 位 Fedora 14 系统 我正在使用编译我的源代码gcc 有谁知道如何在编译c代码时禁用警告 EDIT 是的 我知道 最好的办法是修复这些警告以避免任何未定义 未知的行为 但目前在这里 我第一次编写了巨大的代码 并且在
  • 导出类时编译器错误

    我正在使用 Visual Studio 2013 但遇到了一个奇怪的问题 当我导出一个类时 它会抛出 尝试引用已删除的函数 错误 但是 当该类未导出时 它的行为会正确 让我举个例子 class Foo note the export cla
  • Paradox 表 - Oledb 异常:外部表不是预期的格式

    我正在使用 Oledb 从 Paradox 表中读取一些数据 我遇到的问题是 当我将代码复制到控制台应用程序时 代码可以工作 但在 WinForms 中却不行 两者都以 x86 进行调试 我实际上只是复制代码 在 WinForms 应用程序
  • 序列化和反序列化 Visual Studio 解决方案文件 - 或以编程方式编辑?

    我想以编程方式添加和删除项目 解决方案文件夹和其他项目 例如解决方案的资源文件 但我不确定最好的方法是什么 对于那些不知道的人 高度简化 解决方案文件 sln 通常如下所示 Microsoft Visual Studio Solution
  • C# datagridview 列转入数组

    我正在用 C 构建一个程序 并在其中包含一个 datagridview 组件 datagridview 有固定数量的列 2 我想将其保存到两个单独的数组中 但行数确实发生了变化 我怎么能这样做呢 假设一个名为 dataGridView1 的
  • 无法加载文件或程序集“EntityFramework,版本=6.0.0.0”

    我究竟做错了什么 我该如何解决这个问题 我有一个包含多个项目的解决方案 它是一个 MVC NET 4 5 Web 应用程序 在调试模式下启动后调用其中一个项目时 出现此错误 导致此错误的项目具有以下参考 两个都是版本6 0 0 0 应用程序
  • dropdownlist DataTextField 由属性组成?

    有没有一种方法可以通过 C 使 asp net 中的下拉列表的 datatextfield 属性由对象的多个属性组成 public class MyObject public int Id get set public string Nam
  • 在VisualStudio DTE中,如何获取ActiveDocument的内容?

    我正在 VisualStudio 中编写脚本 并尝试获取当前 ActiveDocument 的内容 这是我当前的解决方案 var visualStudio new API VisualStudio 2010 var vsDTE visual
  • 允许使用什么类型的内容作为 C 预处理器宏的参数?

    老实说 我很了解 C 编程语言的语法 但对 C 预处理器的语法几乎一无所知 尽管我有时在编程实践中使用它 所以问题来了 假设我们有一个简单的宏 它扩展为空 define macro param 可以放入宏调用构造中的语法有哪些限制 调用宏时
  • 设计 Javascript 前端 <-> C++ 后端通信

    在我最近的将来 我将不得不制作一个具有 C 后端和 Web 前端的系统 要求 目前 我对此了解不多 我认为前端将触发数据传输 而不是后端 所以不需要类似 Comet 的东西 由于在该领域的经验可能很少 我非常感谢您对我所做的设计决策的评论
  • 使用(linq to sql)更新错误

    我有两个表 通过外键 CarrierID 绑定 Carrier CarrierID CarrierName CarrierID 1 CarrierName DHL CarrierID 2 CarrierName Fedex Vendor V
  • #pragma pack(16) 和 #pragma pack(8) 的效果总是相同吗?

    我正在尝试使用来对齐数据成员 pragma pack n http msdn microsoft com en us library 2e70t5y1 28v vs 100 29 aspx 以下面为例 include
  • 纯虚函数可能没有内联定义。为什么?

    纯虚函数是那些虚函数并且具有纯说明符 0 第 10 4 条第 2 款C 03 的内容告诉我们什么是抽象类 顺便说一句 如下 注意 函数声明不能 同时提供纯说明符和定义 尾注 示例 struct C virtual void f 0 ill
  • C++ [Windows] 可执行文件所在文件夹的路径[重复]

    这个问题在这里已经有答案了 我需要访问一些文件fstream在我的 Windows 上的 C 应用程序中 这些文件都位于我的exe文件所在文件夹的子文件夹中 获取当前可执行文件的文件夹路径的最简单且更重要的 最安全的方法是什么 Use 获取
  • 使用 Chrome 和 Selenium 设置 LocalStorage

    我正在尝试使用 OpenQA Selenium 和 Chrome 设置本地存储键和值 我认为这相当微不足道 但我似乎无法让它发挥作用 我对 C 很陌生 所以我可能错过了一些东西 无论如何 我有这个功能 public static void
  • FindAsync 很慢,但是延迟加载很快

    在我的代码中 我曾经使用加载相关实体await FindAsync 希望我能更好地遵守 C 异步指南 var activeTemplate await exec DbContext FormTemplates FindAsync exec

随机推荐

  • XAML条件编译

    有没有一种简单的方法可以在我的 xaml 文件中使用与我的 c 代码相同的条件编译符号 有一些支持XAML 中的条件编译 http blog ikaika org 2011 08 run time and design time selec
  • Pandas 数据透视表的逆

    我有一个数据框 例如 df p 已经转换为数据透视表 import pandas as pd df pd DataFrame start year 2000 2001 2002 end year 2010 2011 2012 price 1
  • Android 测试给出 IllegalStateException: 未注册仪器

    我按照谷歌教程编写了我的第一个 Android 测试 当然我得到了错误 java lang IllegalStateException No instrumentation registered Must run under a regis
  • 向 python 生成器添加元素

    是否可以将元素附加到 python 生成器 我目前正在尝试从一组杂乱的文件夹中获取所有图像并将它们写入一个新目录 为了获取文件 我使用 os walk 它返回单个目录中的图像文件列表 虽然我可以用这个列表创建一个生成器 但我不知道如何将所有
  • 哪种 NoSQL 数据库最适合仅附加审计日志记录用例?

    我的用例是资源的审核日志记录 为了进行讨论 考虑一个非常简单的模式 资源名称 访问时间戳和访问用户名 有了所有 NoSQL 选项 我想知道哪种解决方案最适合我的用例 资源名称保存在图形数据库 Neo4j 中 虽然我们可以将顶点和边添加到连接
  • 如何获取所有正在运行的活动android?

    我想知道有没有办法获得所有跑步活动的列表 据我了解 一次只会运行一个活动 该活动将是屏幕上的活动活动 其他活动将处于暂停或停止状态 如果有
  • Rails Mailer:将电子邮件发送到本地文件

    有什么方法可以将 Rails 3 中的电子邮件发送到本地文件等 而不是使用 SMTP 服务器吗 我想在不使用任何类型的 SMTP 的情况下测试电子邮件的内容 最好仅在 DEV 环境中测试 最好的是本地 SMTP 或允许我检查电子邮件 检查电
  • 如何使用 Passport.js 访问 OAuth 的状态参数?

    我正在使用 Passport js 进行身份验证 并且每个Google 的 OAuth2 文档 https developers google com accounts docs OAuth2Login formingtheurl 我传递一
  • Python:使用 pyOpenSSL.crypto 读取 pkcs12 证书

    我有西班牙权威机构 FNMT 颁发的有效证书 我想用它来了解更多信息 该文件的扩展名是 p12 我想阅读其中的信息 名字和姓氏 并检查证书是否有效 可以用 pyOpenSSL 做到这一点吗 我想我必须使用 OpenSSL 中的加密模块 有任
  • 如何在 StringBuilder 上检查 null?

    我想在我的代码中专门检查 null 或空 空和空是否相同StringBuilder在Java中 例如 StringBuilder state new StringBuilder StringBuilder err new StringBui
  • 如何使用反射获得泛型类型的正确文本定义?

    我正在研究代码生成 并遇到了泛型的障碍 这是导致我出现问题的 简化 版本 Dictionary
  • 在网络浏览器中打开 R Shiny 应用程序时,传单多边形会失去颜色

    我正在使用 R 中的传单构建地图 将其部署为 Shiny 应用程序 Shiny 应用程序在 RStudio 中运行良好 但是当我在网络浏览器中打开它时 多边形失去了颜色 其他一切都很好 底图在那里 多边形都在那里 您可以将鼠标悬停在多边形上
  • Ipython笔记本缓存问题

    在 ipython 笔记本中 我调用从我自己的模块导入的函数并运行一些代码 我注意到 如果我更改函数中的代码 在笔记本之外 并执行笔记本 则旧版本的函数将运行 当我记得时 ipython笔记本或firefox似乎正在缓存我可以用ctrl F
  • Python Byte 不打印二进制

    当我在 Python 中打印这样的程序时 x b francis 输出是b francis 如果字节在0 s and 1为什么它不打印出来 你似乎从根本上感到困惑 以一种非常常见的方式 数据本身是一个不同的概念表示 即当您尝试时所看到的pr
  • 页面滚动结束时的 jQuery 回调

    我有一个 div 标签 在 css 中设置为 overflow scroll 我有一个回调 应该在使用它找到的元素的滚动末尾调用 details scroll function if this height this get 0 scrol
  • 未找到 Android 方面,使用 Android Studio 0.2 进行编译时出现问题

    因此 遵循这篇 SO 帖子的建议 抱歉 我会在那里发表评论 希望我没有足够的声誉 Gradle 失败 无法确定要执行哪些任务 https stackoverflow com questions 17614477 gradle failure
  • vc++编译错误RC:致命错误RC1107:无效用法;使用RC /?为了

    我在构建 vc 项目时遇到以下错误 使用 Visual Studio 2010 RC 致命错误 RC1107 无效使用 使用RC 为了 我知道构建资源时存在一些问题 但如何获得确切的问题区域 Thanks 解决方案 在最后一个包含路径中添加
  • 简单的旋转悬停效果不起作用

    我正在尝试创建一个简单的效果 以便当我将鼠标悬停在最内圈时 两个外环旋转以创建很酷的效果 我认为这将是一项简单的任务 但我似乎无法弄清楚我做错了什么 当我将鼠标悬停在内圈上时 所有变化都是两个内圈向屏幕右下角移动 根本不旋转 我在这里缺少什
  • yii2 作曲家更新错误:版本字符串“2.*”无效

    我正在使用作曲家更新Yii2项目 但它正在退出但有异常 我已经将composer更新到最新版本 c6cc6dd6070871f4b198ed39f76dd8047c116b02 但它仍然不起作用 Importing tag v2 0 2 2
  • 何时在 C++ 中使用指针

    我刚刚开始学习C 中的指针 我不太确定何时使用指针 何时使用实际对象 例如 在我的一项作业中 我们必须构造一个 gPolyline 类 其中每个点都由一个 gVector 定义 现在 我的 gPolyline 类变量如下所示 private