用局部类的时候注意的问题:
a.局部类不能被外部类所继承
b.不能定义静态变量
c.所有方法都必须在类内部实现
其实局部类在实践中很少用,其一个用途是类型转换。
在一个函数体内定义的类成为局部类。局部类中只能使用它的外围作用域中的对对象和函数进行联系,因为外围作用域中的变量与该局部类的对象无关。(这句话比较拗口,其实这么理解,在函数A中定义了类B,那么只能在A中实例化一个B的对象来使用B,而不能说B.func()这种方式,个人理解,望指正)。
int val;
void fun()
{
static int s;
class InClass
{
public:
void setS(int i)
{
s = i;
}
};
InClass in;
in.setS(2);
}
用局部类的时候注意的问题:
a.局部类不能被外部类所继承
b.不能定义静态变量
c.所有方法都必须在类内部实现
其实局部类在实践中很少用,其一个用途是类型转换。
class Interface
{
public:
virtual void Fun() = 0;
};
template <class T, class P>
Interface* MakeAdapter(const T& obj, const P& arg)
{
int x;
class Local : public Interface
{
public:
Local(const T& obj, const P& arg)
: obj_(obj), arg_(arg) {}
virtual void Fun()
{
x = 100;
obj_.Call(arg_);
}
private:
T obj_;
P arg_;
};
return new Local(obj, arg);
}