C++内部类
1. 内部类概念
如果一个类定义在另一个类的内部,这个内部类就叫做内部类。注意此时这个内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去调用内部类。外部类对内部类没有任何优越的访问权限。
即:内部类就是外部类的友元类。注意友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所有成员。但是外部类不是内部类的友元。
2. 内部类可以定义在外部类的public、protected、private
如果内部类定义在public,则可通过 外部类名::内部类名 来定义内部类的对象。
如果定义在private,则外部不可定义内部类的对象,这可实现“实现一个不能被继承的类”问题。
3. 注意内部类可以直接访问外部类中的static、枚举成员,不需要外部类的对象/类名
class A
{
private: static in k;
int h;
public: class B{
void foo()
{
cout<<k<<endl;
//cout<<h<<endl; //这里是错的,因为内部类是一个独立的类,不属于外部类,此时还没有外部类的对象,显然没有h
}
}
}
class A
{
private: static in k;
int h;
public: class B{
void foo(A a)
{
cout<<k<<endl;
cout<<a.h<<endl;//OK
}
}
}
4. 在堆中创建内部类对象
class A{
public:
class B{
}
}
int _tmain()
{
A::B*b = new A::B();
return 0;
}
5.内部类可以先在外部类中声明,然后再外部类外定义:
class A
{
private:
static int i;
public:
class B;
};
class A::B{
public:
void foo()
{
cout<< i <<endl;
}
}