JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.3: C++ ユーザーズガイド     Oracle Solaris Studio 12.3 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I C++ コンパイラ

1.  C++ コンパイラの紹介

2.  C++ コンパイラの使用方法

3.  C++ コンパイラオプションの使い方

パート II C++ プログラムの作成

4.  言語拡張

4.1 リンカースコープ

4.1.1 Microsoft Windows との互換性

4.2 スレッドローカルな記憶装置

4.3 例外の制限の少ない仮想関数による置き換え

4.4 enum の型と変数の前方宣言の実行

4.5 不完全な enum 型の使用

4.6 enum 名のスコープ修飾子としての使用

4.7 名前のない struct 宣言の使用

4.8 名前のないクラスインスタンスのアドレスの受け渡し

4.9 静的名前空間スコープ関数のクラスフレンドとしての宣言

4.10 事前定義済み __func__ シンボルの関数名としての使用

4.11 サポートされる属性

4.11.1 __packed__ 属性の詳細

4.12 Intel MMX および拡張 x86 プラットフォーム組み込み関数のためのコンパイラサポート

5.  プログラムの編成

6.  テンプレートの作成と使用

7.  テンプレートのコンパイル

8.  例外処理

9.  プログラムパフォーマンスの改善

10.  マルチスレッドプログラムの構築

パート III ライブラリ

11.  ライブラリの使用

12.  C++ 標準ライブラリの使用

13.  従来の iostream ライブラリの使用

14.  ライブラリの構築

パート IV 付録

A.  C++ コンパイラオプション

B.  プラグマ

用語集

索引

4.8 名前のないクラスインスタンスのアドレスの受け渡し

一時変数のアドレスは取得できません。たとえば、次のコードは不正です。コンストラクタ呼び出しによって作成された変数のアドレスが取得されてしまうからです。ただし、-features=extensions オプションを使用した場合は、この不正なコードもコンパイル可能になります。

class C {
  public:
    C(int);
    ...
};
void f1(C*);
int main()
{
  f1(&C(2)); // invalid
}

このコードを有効なものにするには、次のように明示的な変数を使用します。

C c(2);
f1(&c);

一時オブジェクトは、関数が終了したときに破棄されます。一時変数のアドレスを取得しないようにするのは、プログラムの作成者の責任になります。また、(f1 などで) 一時変数に格納されたデータは、その変数が破棄されたときに失われます。