關(guān)于C++一些特性的探究
在學(xué)習(xí)c++的過程中,也曾經(jīng)學(xué)習(xí)java,就發(fā)現(xiàn)java有類的嵌套,而看的c++的書,從來沒有哪個講c++的類可以嵌套,于是就試了一下,看是否c++可以嵌套類(編譯環(huán)境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; }
結(jié)果是正確的,那么看來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; }
結(jié)果能成功調(diào)用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; }
好了結(jié)果說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; }
結(jié)果也是正確的,看來類B是可以繼承其他類的,也有那些繼承關(guān)系。
結(jié)論:
我們分析到c++是可以進行類嵌套的,并且可以像正常類一樣操作它,除了不能繼承嵌套它的類,目前還沒發(fā)現(xiàn)有其它特性,有興趣的可以驗證一下匿名類是否可以在c++被允許。
以上這篇關(guān)于C++一些特性的探究就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
VS2019安裝cbd調(diào)試器的實現(xiàn)步驟
本文主要介紹了VS2019安裝cbd調(diào)試器的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12如何通過函數(shù)指針調(diào)用函數(shù)(實現(xiàn)代碼)
指針可以不但可以指向一個整形,浮點型,字符型,字符串型的變量,也可以指向相應(yīng)的數(shù)組,而且還可以指向一個函數(shù)2013-09-09