ホームページ  >  記事  >  バックエンド開発  >  C++ 関数はどのように参照またはポインタを戻り値として返すのでしょうか?

C++ 関数はどのように参照またはポインタを戻り値として返すのでしょうか?

PHPz
PHPzオリジナル
2024-04-13 17:45:01747ブラウズ

C 関数は、次の方法で戻り値として参照またはポインタを返すことができます。 参照を返す: 戻り値の型として '&' を使用すると、関数は呼び出し元オブジェクトの値を変更できます。戻りポインター: 戻りの型として「*」を使用すると、関数は呼び出し元オブジェクトが指す値を変更できます。参照またはポインターを使用する場合は、関数が戻った後もオブジェクトが有効なままであることを確認し、コードの明瞭さを損なう不必要な使用を避けてください。

C++ 函数如何返回引用或指针作为返回值?

#C 関数が戻り値として参照またはポインターを返す方法

C では、関数は通常、呼び出し元が提供するオブジェクトまたは変数を通じてパラメーターを渡します。 。ただし、関数が呼び出し元オブジェクトへの参照またはポインターを返したい場合があります。これはいくつかの方法で実現できます。

参照を返す

参照を返すには、参照の戻り値の型 & を使用します。例:

int& max(int& a, int& b) {
  return (a > b) ? a : b;
}

この関数は、より大きな数値への参照を返し、呼び出し元が元の値を変更できるようにします。

実際的なケース

name 属性を含む学生クラスがあるとします。次のように、生徒の名前への参照を返す関数を作成できます。

class Student {
public:
  string& getName() {
    return name;
  }

private:
  string name;
};

int main() {
  Student student;
  student.getName() = "John Doe";
  cout << student.getName() << endl;  // 输出:"John Doe"
}

Return pointer

ポインタを返すには、戻り値として * 逆参照演算子を使用します。タイプ 。例:

int* max(int* a, int* b) {
  return (a > b) ? a : b;
}

この関数は、より大きな数値へのポインタを返し、呼び出し元が元の値を変更できるようにします。

実際的なケース

area 属性を含むシェイプ クラスがあるとします。次のように、シェイプの領域へのポインタを返す関数を作成できます。

class Shape {
public:
  double* getArea() {
    return &area;
  }

private:
  double area;
};

int main() {
  Shape shape;
  *shape.getArea() = 100.0;
  cout << *shape.getArea() << endl;  // 输出:"100"
}

Notes

  • 参照またはポインタを返すときは、オブジェクトは関数が戻った後も有効です。
  • 参照またはポインターを返すと、関数が呼び出し元オブジェクトに直接変更を加えることができるため、予期しない動作が発生する可能性があります。
  • コードの明瞭さが損なわれる可能性があるため、不要な場合は参照やポインタを返さないようにしてください。

以上がC++ 関数はどのように参照またはポインタを戻り値として返すのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。