ホームページ > バックエンド開発 > C++ > C++ 関数が構造体またはクラスを返した場合はどうすればよいでしょうか?

C++ 関数が構造体またはクラスを返した場合はどうすればよいでしょうか?

PHPz
リリース: 2024-04-20 17:09:01
オリジナル
1193 人が閲覧しました

C では、関数は参照またはコピーによって構造体またはクラスを返すことができます。 参照を返す: & 記号を使用すると、呼び出し元は返されたオブジェクトを変更でき、その変更は元のオブジェクトに反映されます。コピーを返す: 値によって返すことにより、呼び出し元によるコピーの変更は元のオブジェクトに影響を与えません。

C++ 函数返回结构体或类时如何处理?

C で構造体またはクラスを返す方法

C では、関数は構造体またはクラスを返すことができますが、これとは異なります。単純なデータ型を返します。構造体またはクラスを正しく返すには、次の概念を理解する必要があります:

1. 参照

参照は変数のエイリアスです。ポインタと同様に、参照は特定のメモリ アドレスを指しますが、ポインタとは異なり、参照を別のアドレスに再割り当てすることはできません。

2. 構造体またはクラスへの参照を返す

構造体またはクラスへの参照を返すには、& 記号を使用します。以下に例を示します。

1

2

3

4

5

6

7

8

9

10

struct Person {

    std::string name;

    int age;

};

 

Person& getPerson() {

    // ... 代码 ...

    Person person = { "John Doe", 30 };

    return person;

}

ログイン後にコピー

この例では、getPerson() 関数は、Person 型の参照を返します。呼び出し元は、返された Person オブジェクトを変更でき、その変更は元のオブジェクトに反映されます。

3. 構造体またはクラスのコピーを返す

呼び出し元に元のオブジェクトを変更させたくない場合は、構造体またはクラスのコピーを返すことができます。クラス。これを行うには、return 値を使用します。

1

2

3

4

5

Person getPersonCopy() {

    // ... 代码 ...

    Person person = { "John Doe", 30 };

    return person;

}

ログイン後にコピー

この例では、getPersonalCopy() 関数は、Person 型のコピーを返します。呼び出し元はコピーを変更できますが、変更は元のオブジェクトには反映されません。

実際的なケース

従業員データを含む Employee クラスがあるとします。

1

2

3

4

5

class Employee {

public:

    std::string name;

    int salary;

};

ログイン後にコピー

Returns への関数を作成できます。 Employee クラスの参照またはコピー:

1

2

3

4

5

6

7

8

9

10

11

12

13

Employee& getEmployeeReference(int id) {

    // ... 代码 ...

    Employee employee;

    // 查找并返回具有给定 ID 的员工的引用

    return employee;

}

 

Employee getEmployeeCopy(int id) {

    // ... 代码 ...

    Employee employee;

    // 查找并返回具有给定 ID 的员工的副本

    return employee;

}

ログイン後にコピー

これらの関数を使用して、必要に応じて従業員データの参照またはコピーを取得できます。

以上がC++ 関数が構造体またはクラスを返した場合はどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート