在C++中对象如何作为参数传递和返回?代码示例

在C++中,我们可以将类的对象作为参数传递,还可以像传递和返回其他变量一样从函数中返回它们;且不需要特殊的关键字或头文件。下面本篇文章就来带大家了解一下,希望对大家有所帮助。

1、将对象作为参数传递

要将对象作为参数传递,我们将对象名作为参数写入,同时调用函数方法与对其他变量执行是相同的。

基本语法:

函数名(对象名);

示例:

#include <bits/stdc++.h> 
using namespace std; 
  
class Example { 
public: 
    int a; 
  
    // 此函数将对象作为参数
    void add(Example E) 
    { 
        a = a + E.a; 
    } 
}; 
int main() 
{ 
  
    // 创建对象
    Example E1, E2; 
  
    // 两个对象的值都已初始化
    E1.a = 50; 
    E2.a = 100; 
  
    cout << 初始值 \n; 
    cout << 对象1的值:  << E1.a 
         << \n对象2的值:  << E2.a 
         << \n\n; 
  
    // 将对象作为参数传递给函数add()
    E2.add(E1); 
  
    // 传递给函数add()后
    cout << 新值 \n; 
    cout << 对象1的值:  << E1.a 
         << \n对象2的值: << E2.a 
         << \n\n; 
  
    return 0; 
}

输出

初始值
对象1的值:50
对象2的值:100


新值
对象1的值:50
对象2的值:150

说明:在此示例中,有一个类具有一个整型变量“a”和一个以对象为参数的函数“add”。该add()函数一个对象调用,另一个对象作为参数。在函数内部,将参数对象的整数值添加调用'add'函数的整数值中。在这方法中,我们可以将对象作为参数传递并更改它们;

注:add函数不返回任何值,因为其返回类型为void。

2、将对象作为参数返回

基本语法:

object = return object_name;

示例:add函数返回“example”类型的对象(即类名),该对象的值存储在E3中。

#include <bits/stdc++.h> 
using namespace std; 
  
class Example { 
public: 
    int a; 
  
    // 此函数将以对象为参数并返回对象
    Example add(Example Ea, Example Eb) 
    { 
        Example Ec; 
        Ec.a = Ec.a + Ea.a + Eb.a; 
  
        // 返回对象
        return Ec; 
    } 
}; 
int main() 
{ 
    Example E1, E2, E3; 
  
    // 两个对象的值都已初始化
    E1.a = 50; 
    E2.a = 100; 
    E3.a = 0; 
  
    cout << 初始值 \n; 
    cout << 对象1的值:  << E1.a 
         <<  \n对象2的值:  << E2.a 
         << \n对象3的值:  << E3.a 
         << \n\n; 
  
    //将对象作为参数传递给函数add()。
    E3 = E3.add(E1, E2); 
  
    // 将对象作为参数传递后更改的值
    cout << 新值 \n; 
    cout << 对象1的值:  << E1.a 
         <<  \n对象2的值:  << E2.a 
         <<  \n对象3的值:  << E3.a 
         << \n; 
  
    return 0; 
}

输出

初始值
对象1的值:50
对象2的值:100
对象3的值:0


新值
对象1的值:50
对象2的值:100
对象3的值:200

说明:在这个例子中,我们可以看到两个方面,即我们如何传递对象以及返回它们。当对象E3调用add函数时,它传递另外两个对象,即E1和E2作为参数。在函数内部,声明了另一个对象,它计算所有三个变量的总和并将其返回给E3。

相关视频教程推荐:《C++教程

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...