#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の一例として、タイプ何?
回答:
- あなたがクラスを定義する場合、コンパイラはクラスのコンパイルされた関数本体の後に、すべての可視まで、そのメンバーのステートメントをコンパイルします。関数BALのボディは、そう声明を見ているので。
Money balance()
{
return bal;//bal的类型?
}
- お金のために宣言されていないクラスのバランスとBALの文だけでは、我々は、スコープのお金を囲むために調べる必要があります。
Money balance()
Money bal;
- お金は実際に二重の外側のスコープで見つかりました。
typedef double Money;
したがって、クラス宣言のと同様。
double balance()
double bal;
- 型宣言タイプから、それはむしろ、最も外側の列よりも、ダブルでBAL。
要約:
- あなたがクラスを定義する場合、コンパイラはクラスのコンパイルされた関数本体の後に、すべての可視まで、そのメンバーのステートメントをコンパイルします。
- 一般的な名前の検索手順:名前とブロックの最初の名前の前に使用したルックアップのステートメントコード、見つからない場合は、スコープが外側の層に見続けて、最も外側のスコープが一致する名前の文を見つけられませんでした場合は、プログラムエラー。