时间:2021-05-02
在学习c++的过程中,也曾经学习java,就发现java有类的嵌套,而看的c++的书,从来没有哪个讲c++的类可以嵌套,于是就试了一下,看是否c++可以嵌套类(编译环境vc++6.0)
于是有了下面的代码:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #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类是否可以使用呢?于是有了下面的代码:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #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能继承别的类呢?于是有了下面的代码:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 #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未定义,好吧,那我们从定义一个类,如下:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #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++一些特性的探究就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Java看上去像C++,所以很自然有人会认为Java会取代C++。但是C++仍然有一些Java还不具备的特性,而且虽然有很多保证说有一天Java会和C++一样块
本文较为详细的分析了关于理解C++指针数组,数组指针,数组名,二维数组的一些技巧。是比较重要的概念,相信对于大家的C++程序设计有一定的帮助作用。一、关于数组名
在C#2.0中,微软给我们带来了一些新的特性,例如泛型,匿名委托等。然而,这些新的特性多多少少会给人一种从别的语言中“抄”来的感觉(例如泛型类似C++的模板,一
前言在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备。本文主要
作为一名C++程序员,在转做PHP开发的过程中,对PHP数组产生了一些混淆,与C++数组有相似的地方,也有一些不同,下面就全面地分析一下PHP的数组及其与C++