Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Cách "trả về đối tượng" (return an object) trong C++


Đối tượng là một thể hiện (instance) của một lớp. Bộ nhớ chỉ được cấp phát khi đối tượng được tạo, không phải khi lớp được định nghĩa.

Một đối tượng có thể được trả về bởi một hàm sử dụng từ khóa return. Chương trình dưới đây minh họa điều này.

Ví dụ

#include <iostream>
using namespace std;

class Point {
private:
    int x;
    int y;
public:
    Point(int x1 = 0, int y1 = 0) {
        x = x1;
        y = y1;
    }
    Point addPoint(Point p) {
        Point temp;
        temp.x = x + p.x;
        temp.y = y + p.y;
        return temp;
    }
    void display() {
        cout << "x = " << x << "\n";
        cout << "y = " << y << "\n";
    }
};

int main() {
    Point p1(5, 3);
    Point p2(12, 6);
    Point p3;
    cout << "Điểm 1\n";
    p1.display();
    cout << "Điểm 2\n";
    p2.display();
    p3 = p1.addPoint(p2);
    cout << "Tổng của hai điểm là:\n";
    p3.display();
    return 0;
}

Kết quả

Điểm 1
x = 5
y = 3
Điểm 2
x = 12
y = 6
Tổng của hai điểm là:
x = 17
y = 9

Hãy hiểu chương trình trên.

Lớp Point có hai thành viên dữ liệu x và y. Nó có constructor có tham số và 2 hàm thành viên. Hàm addPoint() cộng hai giá trị Point và trả về đối tượng temp lưu tổng. Hàm display() in giá trị x và y.

class Point {
private:
    int x;
    int y;
public:
    Point(int x1 = 0, int y1 = 0) {
        x = x1;
        y = y1;
    }
    Point addPoint(Point p) {
        Point temp;
        temp.x = x + p.x;
        temp.y = y + p.y;
        return temp;
    }
    void display() {
        cout << "x = " << x << "\n";
        cout << "y = " << y << "\n";
    }
};

Trong hàm main(), 3 đối tượng của lớp Point được tạo. Giá trị của p1 và p2 được hiển thị. Sau đó tổng của p1 và p2 được tìm và lưu trong p3 bằng cách gọi addPoint(). Giá trị p3 được hiển thị.

Point p1(5,3); Point p2(12,6); Point p3;
cout << "Điểm 1\n"; p1.display();
cout << "Điểm 2\n"; p2.display();
p3 = p1.addPoint(p2);
cout << "Tổng của hai điểm là:\n"; p3.display();