结论:JAVA里面的内部类比C++里面的内部类好用
JAVA代码
1.OutSide.class
2._Main.class
C++代码
1.OutSide.h
2.._Main.cpp
下面是JAVA代码
OutSide.class
package ABoutInnerClass;
public class OutSide
{
public int a=1;
public static int b=10000;
public void print()
{
System.out.println("OutSide-print called");
}
public InSide Create()
{
InSide a=new InSide();
return a;
}
public class InSide
{
public int c=2;
public void print()
{
System.out.println("InSide-print called");
System.out.println("a of OutSide is "+b);
System.out.println("OutSide-a is "+a);
System.out.println("OutSide-a is "+OutSide.this.a);
}
}
}
package ABoutInnerClass;
public class _Main
{
public static void main(String[] args)
{
OutSide outside=new OutSide();
outside.print();
OutSide.InSide inside=outside.new InSide();
inside.print();
OutSide.InSide inside2=outside.Create();
inside2.print();
}
}
运行结果:
OutSide-print called
InSide-print called
a of OutSide is 10000
OutSide-a is 1
OutSide-a is 1
InSide-print called
a of OutSide is 10000
OutSide-a is 1
OutSide-a is 1
Outside.h
#include <stdio.h>
class OutSide
{
public:
int a;
static int static_a;
OutSide() :a(1)
{
}
void print()
{
printf_s("OutSide-print called\n");
}
class InSide
{
public:
int b;
InSide():b(2)
{
}
void print()
{
printf_s("InSide-print called\n");
printf_s("a of OutSide is %d\n", OutSide::static_a);
}
};
InSide* Create()
{
InSide *a = new InSide();
return a;
}
};
int OutSide::static_a = 1000;
_Main.cpp
#include "Demo.h"
#include <string>
void main()
{
OutSide *outside = new OutSide();
outside->print();
OutSide::InSide *inside = new OutSide::InSide();
inside->print();
OutSide::InSide *inside2 = outside->Create();
inside2->print();
getchar();
delete inside2;
delete outside;
delete inside;
}
运行结果:
个人觉得C++中内部类用得不是很多,可以分开写,时代码变得简单,可读性变强