C++中向函数传递对象的三种方法

简介: C++中向函数传递对象的三种方法

文章目录

方法一、使用对象作为函数参数

方法二、使用对象指针作为函数参数

方法三、使用对象引用作为函数参数


使用对象作为函数参数

在C++中对象可以作为参数传递给函数,这种传递方式与传递其他类型的数据是一样的,并且在向函数传递参数时,是通过一种‘传值调用’的方法传给函数,所以函数中对对象的所有修改都不会影响该对象(实参)的本身

下面来看一个实际的例子

#include <iostream>
#include <string>
using namespace std;
class A {
  public:
    A(int a) {
      age = a;
    }
    int show_score() {
      return age;
    }
  private:
    int age;
};
void Func(A ob) {
  cout << ob.show_score();
}
int main() {
  A obj(18);
  Func(obj);
  return 0;
}

输出结果:18

使用对象指针作为函数参数

对象指针是可以作为函数的参数,当我们使用对象指针作为函数参数的时候,就可以实现传址调用,就是在函数调用的时候,将实参和形参的指针变量指向同一个内存地址,所以当函数的形参是对象指针的时候,我们调用该函数对应的实参应该是某个对象的地址值

下面举一个例子详细解释

#include <iostream>
#include <string>
using namespace std;
class A {
  public:
    A(int a) {
      age = a;
    }
    int show_score() {
      return age;
    }
  private:
    int age;
};
void Func(A *ob) {
  cout << ob->show_score();
}
int main() {
  A obj(18);
  Func(&obj);
  return 0;
}

输出结果:18

使用对象引用作为函数参数

在实际操作中使用对象引用作为函数的参数是非常普遍的,我们大部分都喜欢用对象引用取代对象指针作为函数的参数,这是因为使用对象应用的时候作为函数参数,不仅具有对象指针作函数参数的优点,而且这个对象的引用可以用作函数参数,会更简单更直接

#include <iostream>
#include <string>
using namespace std;
class A {
  public:
    A(int a) {
      age = a;
    }
    int show_score() {
      return age;
    }
  private:
    int age;
};
void Func(A &ob) {  //对象引用作为函数的形参
  cout << ob.show_score();
}
int main() {
  A obj(18);
  Func(obj);
  return 0;
}

输出结果:

18

在本道题中完全使用对象指针作为函数参数,但是与上面两个例子的结果是完全相同的,你们可以试着比较一下这几种函数参数在使用方面上的区别和异同,并自己决定以后使用哪种作为您的函数参数

相关文章
|
1月前
|
编译器 C++
C++之类与对象(完结撒花篇)(上)
C++之类与对象(完结撒花篇)(上)
36 0
|
12天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
40 4
|
14天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
38 4
|
1月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
1月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
28 4
|
1月前
|
编译器 C语言 C++
【C++打怪之路Lv4】-- 类和对象(中)
【C++打怪之路Lv4】-- 类和对象(中)
25 4
|
1月前
|
存储 编译器 C语言
【C++打怪之路Lv3】-- 类和对象(上)
【C++打怪之路Lv3】-- 类和对象(上)
17 0
|
1月前
|
编译器 C++ 数据库管理
C++之类与对象(完结撒花篇)(下)
C++之类与对象(完结撒花篇)(下)
31 0
|
1月前
|
编译器 C++
C++之类与对象(3)(下)
C++之类与对象(3)(下)
35 0
|
1月前
|
编译器 C++
C++之类与对象(3)(上)
C++之类与对象(3)
17 0