0 c++ reference object parameter-passing c++11
我正在上一门C ++课程,并且被困在类和对象上。简而言之,我正在做一个分配,创建一个带有两个变量的类(假设长度和宽度)。
我已经弄清楚了如何使用get和set函数来做到这一点。但是,然后,我们必须对这些变量使用数学运算。我们应该编写一个函数,该函数将类的一个实例作为参数(因此有两个变量),然后对该对象(作为参数的一个)和调用方法的对象进行数学运算。
我感到困惑的部分原因是语言,我不确定这到底意味着什么。到目前为止,就像我说的那样,我设法能够通过用户输入设置setLength和setWidth变量。我真的非常想尝试将这些值(或该对象?)传递给函数,然后调用另一个对象的方法?
也许有人可以帮助我弄清楚“将一个对象作为参数然后对我称之为方法的对象进行数学运算”是什么意思?或者只是帮助传递物体?
传递对象就像传递其他种类的变量一样。如果要将整数传递给函数,则可以使用以下语法声明该函数:
void myFunction(int myInt);
Run Code Online (Sandbox Code Playgroud)
如果您传递的是class对象Foo,则可能是:
void myOtherFunction(Foo myFoo);
Run Code Online (Sandbox Code Playgroud)
这有点像说:“这是我希望您在计算中使用的东西。复制我在此处传递的对象!。而是通过引用传递:
void myFunction(int &myInt);
void myOtherFunction(Foo &myFoo);
Run Code Online (Sandbox Code Playgroud)
使您可以修改传递的值。与更大的对象相比,它比通过值传递值便宜得多,后者是此答案中的原始语法。您可以在对计算机说的时候想到它:“我知道您想要此值,但我不会让您复制它。只需查看那边,您就会发现我想要的工作与。” 但是有时候您不想修改正在使用的东西!
当然,您可能会非常小心地避免更改功能,但是C ++语言允许您说您不应该修改变量,然后会检查您是否不为您修改变量!
这可以通过使用
void yetAnotherFunction(const Foo &myFoo);
Run Code Online (Sandbox Code Playgroud)
的意思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;
}
Run Code Online (Sandbox Code Playgroud)
然后在您的客户端代码(可能是main函数,在您的编程生涯中这时)上,您需要执行以下操作:
MySimpleType object;
modifier(object, 13, 12);
cout << object.first << ", " << object.second;
Run Code Online (Sandbox Code Playgroud)
应该打印出来:
13, 12
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |