通常情况下,类实例作为函数参数时,最好使用引用(传引用)和指针,而不是直接传值。可以避免不必要的对象复制,提高程序的性能并节省内存。
1. 类实例引用作为函数参数
#include <iostream>
#include <string>
// 定义一个简单的类
class Person {
private:
std::string name;
int age;
public:
// 构造函数
Person(const std::string& n, int a) : name(n), age(a) {}
// 成员函数:显示信息
void display() const {
std::cout << "Name: " << name << ", Age: " << age << std::endl;
}
// 成员函数:修改年龄
void setAge(int a) {
age = a;
}
};
// 函数,接受 Person 对象的引用作为参数
void modifyPerson(Person& person, int newAge) {
person.setAge(newAge);
}
int main() {
// 创建一个 Person 对象
Person person("Alice", 30);
// 使用引用传递对象作为参数,修改对象的年龄
modifyPerson(person, 35);
// 显示对象信息
person.display();
return 0;
}
2. 类实例指针作为函数参数
#include <iostream>
#include <string>
// 定义一个简单的类
class Person {
private:
std::string name;
int age;
public:
// 构造函数
Person(const std::string& n, int a) : name(n), age(a) {}
// 成员函数:显示信息
void display() const {
std::cout << "Name: " << name << ", Age: " << age << std::endl;
}
// 成员函数:修改年龄
void setAge(int a) {
age = a;
}
};
// 函数,接受 Person 对象的指针作为参数
void modifyPerson(Person* personPtr, int newAge) {
personPtr->setAge(newAge);
}
int main() {
// 创建一个 Person 对象指针
Person* personPtr = new Person("Alice", 30);
// 使用指针传递对象作为参数,修改对象的年龄
modifyPerson(personPtr, 35);
// 显示对象信息
personPtr->display();
// 释放动态分配的内存
delete personPtr;
return 0;
}