我应该如何写类? C++

2023-12-19

嘿..我真的不明白。我读了一篇关于 C++ 类的教程,但我没有得到一些信息: 在我见过的每个示例和教程中,函数从来都不是在类中编写的!例如,为什么要写这样一个类:

#include <iostream>

using namespace std;

class test
{
    private:
        int x, y;
    public:
        test (int, int);
        int tester () {return x + y; }
};

test::test (int a, int b)
{
    x = a;
    y = b;
}

int main()
{
    test atest (3, 2);
    test atest2 (2, 6);

    cout << "test1: " << atest.tester() << endl;
    cout << "test2: " << atest2.tester() << endl;

    return 0;
}

或者像这样:

#include <iostream>

using namespace std;

class test
{
    private:
        int x, y;
    public:
        void set_values (int,int);
        int testfunc () {return x + y; }
};

void test::set_values (int a, int b)
{
    x = a;
    y = b;
}

int main()
{
    test tester;

    tester.set_values (3, 2);

    cout << "test1: " << tester.testfunc() << endl;

    return 0;
}

而不是简单地这样:

#include <iostream>

using namespace std;

class test
{
    public:
        int tester (int x, int y) { return x + y; }
};

int main()
{
    test atest;

    cout << atest.tester(3, 2) << endl;

    return 0;
}

老实说,我就是不明白!

为什么我需要私人会员?

我应该何时以及如何使用析构函数?

我一般应该如何编写我的课程?

我在这里很困惑,我真的需要有人为我解决问题......谢谢


正如格雷格所说,你确实需要读书。

我一般应该如何编写我的课程?
类允许您将数据和作用于它们的函数组合成一件事。

为什么我需要私人会员?
私有成员只能由类中的函数访问,这使您可以控制数据在类中的存储方式,而类的用户无法执行您不期望的操作。

我应该何时以及如何使用析构函数?
当你有一些东西需要清理的时候,你的对象不再需要了,文件关闭了或者内存释放了。

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

我应该如何写类? C++ 的相关文章

  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • C++ 求二维数组每一行的最大值

    我已经设法用这个找到我的二维数组的每一行的最小值 void findLowest int A Cm int n int m int min A 0 0 for int i 0 i lt n i for int j 0 j lt m j if
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 为什么 POSIX 允许在只读模式下超出现有文件结尾 (fseek) 进行搜索

    为什么寻找文件结尾很有用 为什么 POSIX 让我们像示例中那样在以只读方式打开的文件中进行查找 c http en cppreference com w c io fseek http en cppreference com w c io
  • C# 中值类型和引用类型有什么区别? [复制]

    这个问题在这里已经有答案了 我知道一些差异 值类型存储在堆栈上 而引用类型存储在托管堆上 值类型变量直接包含它们的值 而引用变量仅包含对托管堆上创建的对象位置的引用 我错过了任何其他区别吗 如果是的话 它们是什么 请阅读 堆栈是一个实现细节
  • 如何针对 Nancy 中的 Active Directory 进行身份验证?

    这是一篇过时的文章 但是http msdn microsoft com en us library ff650308 aspx paght000026 step3 http msdn microsoft com en us library
  • C# 用数组封送结构体

    假设我有一个类似于 public struct MyStruct public float a 我想用一些自定义数组大小实例化一个这样的结构 在本例中假设为 2 然后我将其封送到字节数组中 MyStruct s new MyStruct s
  • 基于范围的 for 循环中的未命名循环变量?

    有没有什么方法可以不在基于范围的 for 循环中 使用 循环变量 同时也避免编译器发出有关未使用它的警告 对于上下文 我正在尝试执行以下操作 我启用了 将警告视为错误 并且我不想进行像通过在某处毫无意义地提及变量来强制 使用 变量这样的黑客
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • Windows 10 中 Qt 桌面应用程序的缩放不当

    我正在为 Windows 10 编写一个简单的 Qt Widgets Gui 应用程序 我使用的是 Qt 5 6 0 beta 版本 我遇到的问题是它根本无法缩放到我的 Surfacebook 的屏幕上 这有点难以判断 因为 SO 缩放了图
  • 更改窗口的内容 (WPF)

    我创建了一个简单的 WPF 应用程序 它有两个 Windows 用户在第一个窗口中填写一些信息 然后单击 确定 这会将他们带到第二个窗口 这工作正常 但我试图将两个窗口合并到一个窗口中 这样只是内容发生了变化 我设法找到了这个更改窗口内容时
  • .NET 选项将视频文件流式传输为网络摄像头图像

    我有兴趣开发一个应用程序 它允许我从 xml 构建视频列表 包含视频标题 持续时间等 并将该列表作为我的网络摄像头流播放 这意味着 如果我要访问 ustream tv 或在实时通讯软件上激活我的网络摄像头 我的视频播放列表将注册为我的活动网
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • java中如何找到class文件的包

    我正在编写一个使用 class 文件的 java 程序 我希望能够读取文件系统上的 class 文件 使用 InputStream 并确定它所在的包 该 class 文件可能不在一个好的包目录结构中 它可能位于某个随机位置 我怎样才能做到这
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr

随机推荐

  • 数据流中的近似重复检测

    我目前正在开发一个可以生成大量文本内容的流 API 正如预期的那样 API 给出了大量重复数据 而且我们也有过滤接近重复数据的业务需求 我对数据流中的重复检测做了一些研究 并阅读了 稳定布隆过滤器是用于数据流中重复检测的数据结构 具有误报率
  • makemigrations 未检测到模型中的更改

    我正在使用 django 1 9 6 我最近删除了我的迁移并运行migrate run syncdb and makemigrations my app 今天 我向我的一个模型添加了一个新字段 模型 py value models Posi
  • java - 在 spring mvc 中按名称获取 cookie 值

    我正在开发 java spring mvc 应用程序 我以这种方式在控制器的方法之一中设置了 cookie RequestMapping value news method RequestMethod GET public ModelAnd
  • 更新不可变对象

    我建立了以下课程 class Player val name String val onField Boolean val draft Int val perc Int val height Int val timePlayed Int o
  • iPhone iOS 如何合并Core Data NSManagedObjectContext?

    我正在尝试在后台下载一些 JSON 对象 并且正在执行大量多线程操作 操作完成后 我注意到此断言失败 NSAssert user managedObjectContext isEqual AppUser managedObjectConte
  • Kubernetes ingress 对于特定服务给出 404 错误

    我已经在 Azure 上使用 nginx 入口设置了一个 kubernetes 集群 导航到特定路径时出现 404 错误 我已经设置了一些示例应用程序 它们返回一个简单的回声 效果非常好 我的 ban api 应用程序总是返回 404 错误
  • 按字典顺序打印所有排列

    我想按字典顺序打印字符串的所有排列 我写了这段代码 void permute char a int i int n if i n 1 printf s n a else for int j i j lt n j swap a i a j p
  • 删除 C++ 中无用的文件、包含、全局变量和函数

    我修改了一个包含大量文件和函数的大型 C 项目 问题是 现在有大量无用的文件 包含文件 全局变量和函数 用手去除它们会很痛苦 是否有一种工具可以像编译器一样分析代码并删除所有未使用的内容 我更喜欢unix 的工具 另外 一种仅删除上面提到的
  • 构建函数返回 null 有问题的小部件是:StreamBuilder

    我是 Flutter 新手 我正在尝试完成一件简单的事情 我想使用 BLoC 模式和流创建注册功能 对于用户界面部分我有一个stepper https user images githubusercontent com 16286046 3
  • 以声明方式将宽度分配给可用屏幕宽度的一半

    是否可以将小部件宽度分配为可用屏幕宽度的一半 并使用声明性 xml 来实现 如果您的小部件是一个按钮
  • Selenium RemoteWebdriver 与 python - 性能日志记录?

    我正在尝试从远程 Webdriver 实例获取一些性能日志信息 我正在使用 Python Selenium 绑定 据我看来 这是我应该能够拿回的信息 认为它可能仅适用于 ChromeDriver 我目前正在使用 FireFox 但如果它获得
  • 连接速度非常慢(1 秒)

    我在 Windows 7 上运行 MySQL 5 6 64 位 我正在 32 位 Windows 7 上测试最近从 MySQL 5 0 升级的数据库 我还复制了 my ini 做了一些更改 我发现建立连接需要很长时间 大约 1 秒 作为示例
  • 需要 HTML5 输入 - 如何禁用

    JQuery Validate 拦截所需的属性 例如
  • 在 Angular 应用程序中多次初始化 fullpage.js

    我正在构建一个 Angular 应用程序 它在几个页面中使用 fullpage js 目前 我正在初始化整页 例如 this routes fullpage fullpage options 在模板中为使用它的每个路由使用自定义指令 在每个
  • 使用 Jinja2 模板缩小 Flask 应用程序的 HTML 输出

    是否有 Flask 或 Jinja2 配置标志 扩展可以在渲染模板后自动缩小 HTML 输出 找到了更好的方法来做到这一点 您可以使用此方法缩小所有页面 from flask import Flask from htmlmin main i
  • sizeof('a') 和 sizeof("a") 之间的区别

    我的问题是关于sizeofC 中的运算符 sizeof a equals 4 因为这将需要 a 作为整数 97 sizeof a equals 2 为什么 还 int a 会给出一些垃圾值 为什么 a is a 字符常数 类型int在标准
  • 为什么我安装 OpenMP 后 rxode2 无法构建模型

    编辑4 2023 06 22 我正在尝试使用创建 PK 模型rxode2包裹 不幸的是 我收到一条错误消息 指出error building model使用时rxode 功能 由于我使用的是 Mac 操作系统版本 12 6 6 Intel
  • 插入数百万条记录时如何防止 SQL Server 中的日志增长

    我有一个插入查询 需要插入 5000 万条记录 但是当我执行此查询时 我的数据库日志文件增长到 100GB 并因磁盘已满而停止 如何防止日志文件增长 似乎使用 WITH TABLOCK 时查询不会记录 我解决了 希望能为您工作 查询将如下所
  • IMvxAndroidCurrentTopActivity 是单例吗?

    IMvxAndroidCurrentTopActivity可用于获取 MvvmCross Android 应用程序中当前的顶级活动 问题是 一旦顶级 Activity 发生变化 MvvmCross 是否会立即创建该接口的新实例 还是重用该接
  • 我应该如何写类? C++

    嘿 我真的不明白 我读了一篇关于 C 类的教程 但我没有得到一些信息 在我见过的每个示例和教程中 函数从来都不是在类中编写的 例如 为什么要写这样一个类 include