📅  最后修改于: 2023-12-03 14:53:19.655000             🧑  作者: Mango
在C++编程中,传递和返回对象是一个常见的需求。本文将介绍如何通过C++函数传递和返回对象。
传递对象可以使用C++中函数的参数来实现。下面是一个示例:
#include <iostream>
class Point {
public:
int x, y;
};
void foo(Point point) {
std::cout << point.x << ", " << point.y << std::endl;
}
int main() {
Point point = {1, 2};
foo(point);
return 0;
}
在上面的示例中,我们定义了一个名为Point的类,其具有x和y属性。我们定义了一个名为foo的函数,并将一个Point实例作为参数传递给它。函数foo将Point实例中包含的x和y属性打印到控制台。
返回对象可以使用C++中函数返回值来实现。下面是一个示例:
#include <iostream>
class Point {
public:
int x, y;
};
Point foo() {
Point point = {1, 2};
return point;
}
int main() {
Point point = foo();
std::cout << point.x << ", " << point.y << std::endl;
return 0;
}
在上面的示例中,我们定义了一个名为Point的类,其具有x和y属性。我们定义了一个名为foo的函数,该函数返回一个Point实例。在主函数中,我们调用函数foo,并将返回值存储在一个名为point的Point实例中。然后,我们将point实例中包含的x和y属性打印到控制台。
引用传递对象可以通过将C++函数参数声明为引用来实现。这样,我们可以避免在函数调用中对对象进行复制。下面是一个示例:
#include <iostream>
class Point {
public:
int x, y;
};
void foo(Point& point) {
std::cout << point.x << ", " << point.y << std::endl;
}
int main() {
Point point = {1, 2};
foo(point);
return 0;
}
在上面的示例中,我们定义了一个名为Point的类,其具有x和y属性。我们定义了一个名为foo的函数,并将一个Point实例作为引用传递给它。此时,我们可以直接访问point实例,而无需在函数调用中对其进行复制。
引用返回对象可以通过将函数返回类型声明为引用来实现。这样,我们可以避免在函数调用中对对象进行复制。下面是一个示例:
#include <iostream>
class Point {
public:
int x, y;
};
Point& foo(Point& point) {
point.x = 2;
point.y = 3;
return point;
}
int main() {
Point point = {1, 2};
Point& newPoint = foo(point);
std::cout << newPoint.x << ", " << newPoint.y << std::endl;
std::cout << point.x << ", " << point.y << std::endl;
return 0;
}
在上面的示例中,我们定义了一个名为Point的类,其具有x和y属性。我们定义了一个名为foo的函数,并通过引用将一个Point实例作为参数传递给它。此时,我们可以修改point实例的属性,然后返回该实例。在主函数中,我们调用函数foo,并将返回值存储在一个名为newPoint的Point实例中。然后,我们将newPoint实例中包含的x和y属性打印到控制台,同时也将point实例中包含的x和y属性打印到控制台。