|
通过声明同一范围内的函数、对象或变量或枚举器,可以隐藏类名称。 但是,在关键字 class 作为前缀时仍可以访问类名称。
C++
// hiding_class_names.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
// Declare class Account at global scope.
class Account
{
public:
Account( double InitialBalance )
{ balance = InitialBalance; }
double GetBalance()
{ return balance; }
private:
double balance;
};
double Account = 15.37; // Hides class name Account
int main()
{
class Account Checking( Account ); // Qualifies Account as
// class name
cout << "Opening account with a balance of: "
<< Checking.GetBalance() << "\n";
}
//Output: Opening account with a balance of: 15.37
在任何位置调用类名称 (Account),关键字类都必须用于将其与全局范围内的变量 Account 区分开来。 当类名出现在范围解析运算符 (: 的左侧时,此规则不适用。 在范围解析运算符的左侧的名称始终被视为类名称。
下面的示例演示如何使用 class 关键字声明指向类型 Account 的对象的指针:
C++
class Account *Checking = new class Account( Account );
前面的语句中的初始值设定项(括号内)的 Account 具有全局范围;它的类型为 double。
|
|