C++鲜为人知的一些特性(原创)
2011-03-26 20:04
330 查看
在学习c++的过程中,也曾经学习java,就发现java有类的嵌套,而看的c++的书,从来没有哪个讲c++的类可以嵌套,于是就试了一下,看是否c++可以嵌套类(编译环境vc++6.0)
于是有了下面的代码:
结果是正确的,那么看来c++是支持嵌套类的,至少vc++6.0是支持的
那么B类是否可以使用呢?于是有了下面的代码:
结果能成功调用getB()方法,着可以间接证明这个类正的被正确识别了,好了,那我们看是否B能继承别的类呢?于是有了下面的代码:
好了结果说A未定义,好吧,那我们从定义一个类,如下:
结果也是正确的,看来类B是可以继承其他类的,也有那些继承关系。
结论:
我们分析到c++是可以进行类嵌套的,并且可以像正常类一样操作它,除了不能继承嵌套它的类,目前还没发现有其它特性,有兴趣的可以验证一下匿名类是否可以在c++被允许。
于是有了下面的代码:
#include <iostream> using namespace std; class A { public: A(){ cout<<"this a"<<endl; } ~A(){cout<<"a dead"<<endl;} class B { public: B(){cout<<"this b"<<endl;} ~B(){cout<<"b dead"<<endl;} }; B b; }; class c:public A { }; int main(int argc, char * argv[]) { A a; return 0; }
结果是正确的,那么看来c++是支持嵌套类的,至少vc++6.0是支持的
那么B类是否可以使用呢?于是有了下面的代码:
#include <iostream> using namespace std; class A { public: A(){ cout<<"this a"<<endl; } void getA(){cout<<"i am getA()"<<endl;} ~A(){cout<<"a dead"<<endl;} class B { public: B(){cout<<"this b"<<endl;} ~B(){cout<<"b dead"<<endl;} void getB(){cout<<"i am getB()"<<endl;} }; B b; }; int main(int argc, char * argv[]) { A a; a.b.getB(); A::B b; b.getB(); return 0; }
结果能成功调用getB()方法,着可以间接证明这个类正的被正确识别了,好了,那我们看是否B能继承别的类呢?于是有了下面的代码:
#include <iostream> using namespace std; class A { public: A(){ cout<<"this a"<<endl; } void getA(){cout<<"i am getA()"<<endl;} ~A(){cout<<"a dead"<<endl;} class B:public A { public: B(){cout<<"this b"<<endl;} ~B(){cout<<"b dead"<<endl;} void getB(){cout<<"i am getB()"<<endl;} }; B b; }; int main(int argc, char * argv[]) { A a; a.b.getB(); A::B b; b.getD(); return 0; }
好了结果说A未定义,好吧,那我们从定义一个类,如下:
#include <iostream> using namespace std; class D { public: void getD() { cout<<"i am getD()"<<endl; } }; class A { public: A(){ cout<<"this a"<<endl; } void getA(){cout<<"i am getA()"<<endl;} ~A(){cout<<"a dead"<<endl;} class B:public D { public: B(){cout<<"this b"<<endl;} ~B(){cout<<"b dead"<<endl;} void getB(){cout<<"i am getB()"<<endl;} }; B b; }; int main(int argc, char * argv[]) { A a; a.b.getB(); a.getA(); a.b.getD(); A::B b; b.getB(); b.getD(); return 0; }
结果也是正确的,看来类B是可以继承其他类的,也有那些继承关系。
结论:
我们分析到c++是可以进行类嵌套的,并且可以像正常类一样操作它,除了不能继承嵌套它的类,目前还没发现有其它特性,有兴趣的可以验证一下匿名类是否可以在c++被允许。
相关文章推荐
- 【原创】Infobright 4.5 版本的一些新特性详解
- C++ 学习笔记(一些新特性总结 1)
- C++ 11 的一些重要新特性
- [cocos2d-x] 一些C++ 11新特性的引入
- C++ 学习笔记(一些新特性总结3)
- C++一些特性第一节
- C++ 学习笔记(一些新特性总结 1)
- C++标准中一些鲜为人知的特性
- [原创]关于NOTIFYICONDATA的一些新特性
- C++的一些特性
- 【持续更新】C++里的一些特性
- C++第11版本中的一些强大的新特性小结
- C++ 学习笔记(一些新特性总结 2)
- 一些容易混淆的 C 和 C++ 的不兼容特性
- C++中static的一些特性
- C++与Java在一些语言特性上的异同
- C++ 学习笔记(一些新特性总结 2)
- C++在非面向对象方面的一些特性(基本)
- C++ 语言的一些特性
- c++ 11 一些新特性