C++ 中的嵌套类和局部类

C++中的嵌套类和局部类

最近趁着春节假期空闲,,找了本嵌套类和局部类感觉还是蛮有用的,简单的写写他们的用法。

嵌套类

所谓嵌套类就是可以在一个类中定义另一个类。这个被嵌套的类的作用域就只在它的上一级类中。下面是个例子:

#include <iostream>using namespace std;class c1{public:int a;void foo();class c2{public:int a;void foo();} b;};void c1::foo(){a = 1;}void c1::c2::foo(){a = 2;}int main(){class c1 f;f.foo();f.b.foo();cout << f.a << endl;cout << f.b.a << endl;return 0;}

其实在

下面就是一个类似的例子:

class c3{public:int a;void foo() {a = 3;}class{public:int a;void foo() {a = 4;}} b;};int main(){class c3 ff;ff.foo();ff.b.foo();cout << ff.a << endl;cout << ff.b.a << endl;return 0;}

局部类

所谓局部类,就是定义在一个函数内部的类,这个类只能在这个函数内部使用。下面是个例子:

int main(){class c4{public:int a;void foo() {a = 4;}};class c4 ff;ff.foo();cout << ff.a << endl;return 0;}

通常,嵌套类和局部类的所有成员变量我们都会声明为共有的。因为这两种类只在很小的范围内使用,没有必要通过定义接口来隐藏内部的信息。所以,可以把

另外,多说一句,函数是不能嵌套的。比如下面的例子是无法编译通过的。

int main(){void foo() { cout << "WRONG";};foo();}

但是我们可以通过一些变通的方法来模拟出一个局部函数来。具体来说就是通过重载一个类的下面给个例子:

int main(){struct{void operator () ( void ){cout << "HELLO" << endl;}int operator() (int a, int b){return a + b;}} foo;foo();cout << foo(1, 2);}

正确的寒暄必须在短短一句话中明显地表露出你对他的关怀。

C++ 中的嵌套类和局部类

相关文章:

你感兴趣的文章:

标签云: