关于C++一些特性的探究
发布时间:2020-12-16 05:24:00 所属栏目:百科 来源:网络整理
导读:在学习c++的过程中,也曾经学习java,就发现java有类的嵌套,而看的c++的书,从来没有哪个讲c++的类可以嵌套,于是就试了一下,看是否c++可以嵌套类(编译环境vc++6.0) 于是有了下面的代码: #include iostreamusing namespace std;class A{public: A(){ co
在学习c++的过程中,也曾经学习java,就发现java有类的嵌套,而看的c++的书,从来没有哪个讲c++的类可以嵌套,于是就试了一下,看是否c++可以嵌套类(编译环境vc++6.0) 于是有了下面的代码: #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++被允许。 以上这篇关于C++一些特性的探究就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程小技巧。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- c# – 如何通过以下代码调用Equals,GetHashCode和Compare?
- Oracle数据库利用日志挖掘来恢复误删除的数据
- 浅谈C#跨线程调用窗体控件(比如TextBox)引发的线程安全问题
- c# – 为JsonOutputFormatter构造函数提供ArrayPool对象
- Nosql主要概念、产品分类、及各产品要点
- 使用SQLiteDatabase操作SQLite数据库
- XML解析
- dojo shrinksafe 使用方法-new
- Flash / Flex Tutorial - How to Create a crossdomain.xml
- c# – Azure Web应用程序偶尔会抛出CryptographicException