C ++:検索のクラスメンバー名


#include <iostream>
#include <string>
using namespace std;

typedef double Money;
string bal;
class Acount
{
public:
    Money balance()
    {
        return bal;//bal的类型?
    }

private:
    Money bal;
};

int main()
{
    return 0;
}

質問:BALの一例として、タイプ何?
回答:

  1. あなたがクラスを定義する場合、コンパイラはクラスのコンパイルされた関数本体の後に、すべての可視まで、そのメンバーのステートメントをコンパイルします。関数BALのボディは、そう声明を見ているので。
Money balance()
    {
        return bal;//bal的类型?
    }
  1. お金のために宣言されていないクラスのバランスとBALの文だけでは、我々は、スコープのお金を囲むために調べる必要があります。
Money balance()
Money bal;
  1. お金は実際に二重の外側のスコープで見つかりました。
typedef double Money;

  したがって、クラス宣言のと同様。

double balance()
double bal;
  1. 型宣言タイプから、それはむしろ、最も外側の列よりも、ダブルでBAL。

要約:

  1. あなたがクラスを定義する場合、コンパイラはクラスのコンパイルされた関数本体の後に、すべての可視まで、そのメンバーのステートメントをコンパイルします。
  2. 一般的な名前の検索手順:名前とブロックの最初の名前の前に使用したルックアップのステートメントコード、見つからない場合は、スコープが外側の層に見続けて、最も外側のスコープが一致する名前の文を見つけられませんでした場合は、プログラムエラー。
公開された77元の記事 ウォン称賛25 ビュー10000 +

おすすめ

転載: blog.csdn.net/qq_34801642/article/details/104861173