如何在C++中使用类对象作为函数参数

2024-04-01

我不确定如何拥有一个接收类对象作为参数的函数。有什么帮助吗?下面是一个例子。

#include<iostream>

void function(class object); //prototype

void function(class tempObject)
{
   //do something with object
   //use or change member variables
}

基本上我只是对如何创建一个将接收类对象作为其参数的函数感到困惑,然后在函数内使用这些参数,例如tempObject.variable.

抱歉,如果这有点令人困惑,我对 C++ 还比较陌生。


class是仅*用于引入类定义的关键字。当您将新的类实例声明为本地对象或函数参数时,您仅使用类的名称(必须在范围内)而不是关键字class itself.

e.g.

class ANewType
{
    // ... details
};

这定义了一个新类型,称为ANewType这是一个类类型。

然后您可以在函数声明中使用它:

void function(ANewType object);

然后您可以传递类型的对象ANewType进入函数。该对象将是copied因此,与基本类型非常相似,任何修改参数的尝试都只会修改函数中的参数,而不会影响最初传入的对象。

如果您想按照函数体中的注释所示修改函数外部的对象,则需要通过引用(或指针)获取该对象。例如。

void function(ANewType& object); // object passed by reference

该语法意味着任何使用object函数体中是指传递到函数中的实际对象,而不是副本。所有修改都会修改此对象,并且在函数完成后可见。

[* The class关键字也用在模板定义中,但那是另一个主题。]

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

如何在C++中使用类对象作为函数参数 的相关文章

  • 我可以使用反射更改 C# 中的私有只读字段吗?

    我想知道 由于很多事情都可以使用反射完成 我可以在构造函数完成执行后更改私有只读字段吗 注 只是好奇 public class Foo private readonly int bar public Foo int num bar num
  • 如何自定义 DataTable 列的排序

    我需要对数据表列的值进行排序 该列包含字符串 整数或混合文本 例如 数据表列包含如下值 23 18 12 store 23 store a1 1283 25 如果我使用对值进行排序Dataview sort 方法会按此顺序产生 12 128
  • boost线程在中断时不打印退出消息

    我有这段代码用于执行三个线程 其中第二个线程应在按 Enter 时中断并打印退出消息 void input val DO STUFF return void process val DO STUFF try cout lt lt waiti
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • 使用 C# 使用应用程序密码登录 Office 365 SMTP

    在我们的 Office 365 公司帐户中实施两步身份验证之前 我的 C WPF 程序已成功进行身份验证并发送邮件 我使用了 SmtpClient 库 但现在我必须找到另一个解决方案 因为它不再起作用 我找不到任何使用 O365 应用程序密
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • 使用 VSTO 更改 Outlook 设置

    我刚刚花了大约 4 个小时试图弄清楚如何以编程方式检索 设置 Microsoft Outlook 2010 的 Outlook 设置 我所说的 设置 是指文件 选项 邮件下的设置 我想做的是检索用户设置的设置列表 自动化我们每天需要在某些消
  • 如何避免选择项目时 winforms 树视图图标发生变化

    我正在一个小型 C Winforms 应用程序中尝试树视图 我已经以编程方式将 ImageList 分配给树视图 并且所有节点都很好地显示了它们的图标 but当我单击一个节点时 它的图标会发生变化 变为 ImageList 中的第一个图像
  • 防止复制构造和返回值引用的分配

    如果我有一个函数返回对类实例的引用 但我无法控制其源 比如说list
  • C++ Primer 5th Edition 错误 bool 值没有指定最小大小?

    bool 的最小大小不应该是 1 个字节吗 这有点学术性的东西 尽管它们会转换为数字 并且 与其他所有事物一样 它们最终将基本上由计算机内存中的数字表示 但布尔值不是数字 你的bool可以取值true 或值false 即使您确实需要至少 1
  • 为什么 C 函数不能返回数组类型?

    我是 C 语言新手 想知道 为什么 C 函数不能返回数组类型 我知道数组名是数组第一个值的地址 而数组是 C 中的二等公民 您自己已经回答了这个问题 数组是二等公民 C 按值返回 数组不能按值传递 因此不能返回它们 至于为什么数组不能按值传
  • 如何使用 Clang 查找内存泄漏

    我在我的机器 ubuntu 中安装了 Clang 以便发现我的 C 代码中的内存泄漏 我编写了一个示例代码来检查它的工作情况 如下所示 File hello c for leak detection include
  • 如何从枚举中选择随机值?

    给定 C 中的任意枚举 如何选择随机值 我没有找到这个非常基本的问题 我会在一分钟内发布我的答案作为任何人的参考 但请随意发布你自己的答案 Array values Enum GetValues typeof Bar Random rand
  • 用 C# 编写的带有点击移动的 WPF 游戏

    我试图将标签网格移动到鼠标的位置 就像冒险游戏中的移动一样 理想情况下 我会在途中删除并重新绘制它们 但是 现在我只想弄清楚如何将 int 转换为厚度或 pointtoscreen 到目前为止我有 player XMove int Mous
  • 删除对象时指针自动指向空

    假设我有一个对象和其他几个不同类类型的对象中的 10 个指向它的指针 如果对象被删除 这些指针必须设置为空 通常我会将对象的类与具有指向它的指针的类互连 以便它可以通知它们它正在被删除 并且它们可以将它们的指针设置为空 但这也有一个负担 即
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • 宏观评价[重复]

    这个问题在这里已经有答案了 可能的重复 未定义的行为和序列点 https stackoverflow com questions 4176328 undefined behavior and sequence points 我无法理解以下宏
  • 多个同名内存数据库

    关系到这个答案 https stackoverflow com a 48446491 596758 我试图通过设置让多个上下文工作UseInMemoryDatabase以同名 下面的测试失败 第二个上下文为空 我还需要做什么才能在内存数据库
  • Windows 上 libcurl 的静态库[重复]

    这个问题在这里已经有答案了 如何将此库 libcurl 静态链接到 exe 我努力了 disable share enable static 没有帮助 我使用的是MingW32 有没有一种简单的方法来静态链接这个库 这样我的应用程序就不再有
  • 当我读取 500MB FileStream 时出现 OutOfMemoryException

    我使用 Filestream 读取大文件 gt 500 MB 但出现 OutOfMemoryException 任何有关它的解决方案 我的代码是 using var fs3 new FileStream filePath2 FileMode

随机推荐

  • java.lang.ClassCastException:字符串无法转换为日期

    堆栈跟踪 java lang ClassCastException java lang String cannot be cast to java util Date at org hibernate type descriptor jav
  • 检查应用程序范围书签下的路径在沙盒应用程序内是否可写

    我有一个 OS X 应用程序 它存储应用程序范围的书签以持久访问某些目录 我可以毫无问题地写入这些目录 但我的代码中有一部分我想进行额外的检查以确认路径可写并且失败 var fileManager NSFileManager NSFileM
  • AVFoundation 将 Alpha 通道视频叠加在另一个视频上?

    我尝试过将图像覆盖在视频资源上 并且还认为应该有某种方法可以将 Alpha 通道视频覆盖在另一个视频上 有没有办法将 Alpha 通道视频叠加在另一个视频资源上 None
  • 奇怪的 Java HashMap 行为 - 找不到匹配的对象

    当我试图在里面寻找钥匙时 我遇到了一些奇怪的行为java util HashMap 我想我错过了一些东西 代码段基本上是 HashMap
  • 膨胀类 ImageButton 时出错

    我有一个应用程序 其中有fragment and image button关于这一点 问题是它正在上面工作5 0但不低于5 0 最小sdk版本是17 不明白这里出了什么问题 我遇到了 2 个例外 One is RuntimeExceptio
  • Checkstyle Eclipse 插件不起作用

    我正在使用 Juno Eclipse 发行版的 eclipse checkstyle 插件 每当检查代码是否有 checkstyle 错误时 我都会收到以下错误 cannot initialize module TreeWalker Una
  • 使用 Scala 进行依赖注入

    我正在寻找一种在 Scala 中进行依赖注入的方法 类似于 C 中的 Spring 或 Unity 但我没有发现任何真正有趣的东西 MacWire 我不明白这样做有什么好处 因为我们必须在wire CASS 中上课 那么如果你在调用wire
  • nginx conf 文件是什么语言?

    我想在我的 Nginx 配置文件中编写一些更复杂的条件 但我不确定语法 也找不到描述示例中基础知识之外可以做什么的文档 而且我似乎无法在Nginx 论坛或邮件列表 例如 我是否可以拥有一个unless健康 状况 所以我是 nginx 的新手
  • 如何以编程方式运行 NUnit

    我有一些引用 NUnit 的程序集并使用单个测试方法创建单个测试类 我能够获取该程序集的文件系统路径 例如 C test dll 我想以编程方式使用 NUnit 来针对该程序集运行 到目前为止我有 var runner new Simple
  • 我无法打开可变文件名

    有什么理由吗Dev C 不让我做file open file name variable 我不明白为什么它不允许我打开任何东西 除了像这样的硬编码名称file open abc txt 如何解决这个问题 不使用 Dev C 这基本上是我所拥
  • DecimalFormat 的奇数结果四舍五入

    提供一个浮点值37 35我得到一串37 3 这是我的代码 DecimalFormat format new DecimalFormat 0 format setRoundingMode RoundingMode HALF UP return
  • C# 剪贴板直接复制粘贴

    Hi 我想直接复制 粘贴 例如我只需单击一下按钮即可将粘贴到剪贴板 为此您可以编写示例代码 如果您想从文本框 在此示例中为 textBox1 复制 则需要以下内容 Clipboard SetText textBox1 Text To cop
  • 无法移出 ViewPort 窗格 - Selenium

    我正在尝试使网页自动化 http the internet herokuapp com exit intent http the internet herokuapp com exit intent 如果我们从视图窗格移向页面顶部 则会出现
  • 防止一个元素覆盖另一个元素[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个固定的标题 当我滚动时 某些
  • 如何在.net中检索硬盘固件序列号?

    如何在 net 中检索硬盘固件序列号 我能够使用 WMI 调用检索 HDD 序列号 但无法找到任何方法来检索 HDD 固件序列号 提前感谢 使用 WMI 简单来说 这是一个低级函数 没有 理智的 更高级别的 API 会支持 读取或写入文件是
  • 什么是 F# 引号?

    F 中的 引号 是什么 它们的用途是什么 See http msdn microsoft com en us library dd233212 aspx http msdn microsoft com en us library dd233
  • Rails 5.2.0 与 Ruby 2.5.1 控制台 - `警告:``已经`初始化常量 FileUtils::VERSION

    我目前在新的 Rails 应用程序中遇到问题 更具体地说 轨道 5 2 0 Ruby 2 5 1p57 2018 03 29 修订版 63029 x86 64 darwin17 rvm 1 29 4 最新 作者 Michal Papis P
  • 将日期字符串解析为 java.util.Date 时出现非法模式字符“T”

    我有一个日期字符串 我想使用 java Date API 将其解析为正常日期 以下是我的代码 public static void main String args String date 2010 10 02T12 23 23Z Stri
  • 在 Mongoose 中间件方法之间共享数据 pre save 和 post save

    请参阅底部更新的示例代码 我在当前的 NodeJS 项目中使用 Mongoose 顺便说一句 这非常棒 并且我有一个 MDB 集合 它将在不同的集合中存储文档的更改 基本上是一个变更日志存储修改的内容 我试图实现的方法是创建一个存储文档的
  • 如何在C++中使用类对象作为函数参数

    我不确定如何拥有一个接收类对象作为参数的函数 有什么帮助吗 下面是一个例子 include