gpt4 book ai didi

c++ - 在 C++ 中传递类对象

转载 作者:太空宇宙 更新时间:2023-11-04 15:02:06 24 4
gpt4 key购买 nike

我正在学习 C++ 类(class),但我被困在类和对象上。我正在进行一项作业,简而言之,它创建了一个包含两个变量(比如长度和宽度)的类。

我已经弄清楚如何使用 get 和 set 函数来执行此操作。但是,我们必须对这些变量使用数学。我们应该编写一个函数,将类的一个实例作为参数(因此有两个变量),然后对这个对象(作为参数的那个)和调用方法的对象进行数学计算。

我感到困惑的部分原因是语言,我不确定这到底是什么意思。到目前为止,就像我说的,我最终能够通过用户输入设置 setLength 和 setWidth 变量。我真的非常坚持尝试将这些值(或这个对象?)传递给一个函数,然后调用另一个对象的方法?

也许如果有人能帮我弄清楚“将一个对象作为参数,然后对我调用的方法的对象进行数学运算”是什么意思?或者只是帮助传递物体?

最佳答案

传递对象就像传递其他类型的变量一样。如果您将一个整数传递给一个函数,您将使用此语法来声明该函数:

void myFunction(int myInt);

如果你传入一个类 Foo 的对象,它将是:

void myOtherFunction(Foo myFoo);

这有点像在说,“这是我希望你在计算中使用的东西。复制我传入的对象!。改为通过引用传递:

void myFunction(int &myInt);
void myOtherFunction(Foo &myFoo);

让您修改传递的值。对于更大的对象,它也比 按值传递 便宜得多,这是该答案中的原始语法。你可以把它想象成你对计算机说,“我知道你想要这个值,但我不会让你复制这个。只是看看那里,相反,你会找到我想让你一起工作的东西。”但有时您不想修改您正在使用的东西!

当然,您可以非常小心在您的函数中避免更改内容,但是 C++ 语言让您声明您不应该修改变量,然后将检查您是否没有这样做为您修改!

这可以通过使用来完成

void yetAnotherFunction(const Foo &myFoo);

const 表示“不要让我被修改!”给编译器,编译器会听。


假设您想使用(非成员)函数为一个简单对象分配一些值:

// a struct should usually hold simple groups of data, 
// that don't do much by themselves. Their members are
// also public by default.
struct MySimpleType{
int first;
int second;
};

// object is passed by reference so it can be modified.
void modifier(MySimpleType &object, int newFirst, int newSecond){
object.first = newFirst;
object.second = newSecond;
}

然后在您的客户端代码中(可能是 main 函数,在您的编码生涯的这个阶段)您执行以下操作:

MySimpleType object;

modifier(object, 13, 12);

cout << object.first << ", " << object.second;

应该打印出来:

13, 12

关于c++ - 在 C++ 中传递类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31661021/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com