關(guān)于C++一些特性的探究
在學(xué)習(xí)c++的過(guò)程中,也曾經(jīng)學(xué)習(xí)java,就發(fā)現(xiàn)java有類的嵌套,而看的c++的書(shū),從來(lái)沒(méi)有哪個(gè)講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é)果是正確的,那么看來(lái)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()方法,著可以間接證明這個(gè)類正的被正確識(shí)別了,好了,那我們看是否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é)果說(shuō)A未定義,好吧,那我們從定義一個(gè)類,如下:
#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é)果也是正確的,看來(lái)類B是可以繼承其他類的,也有那些繼承關(guān)系。
結(jié)論:
我們分析到c++是可以進(jìn)行類嵌套的,并且可以像正常類一樣操作它,除了不能繼承嵌套它的類,目前還沒(méi)發(fā)現(xiàn)有其它特性,有興趣的可以驗(yàn)證一下匿名類是否可以在c++被允許。
以上這篇關(guān)于C++一些特性的探究就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言計(jì)算代碼執(zhí)行所耗CPU時(shí)鐘周期
本文給大家介紹的是使用C語(yǔ)言來(lái)計(jì)算代碼執(zhí)行所耗CPU時(shí)鐘周期的代碼,非常的簡(jiǎn)單實(shí)用,不過(guò)要依托于sync,有需要的小伙伴自己參考下吧。2015-03-03VS2019安裝cbd調(diào)試器的實(shí)現(xiàn)步驟
本文主要介紹了VS2019安裝cbd調(diào)試器的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-12-12如何通過(guò)函數(shù)指針調(diào)用函數(shù)(實(shí)現(xiàn)代碼)
指針可以不但可以指向一個(gè)整形,浮點(diǎn)型,字符型,字符串型的變量,也可以指向相應(yīng)的數(shù)組,而且還可以指向一個(gè)函數(shù)2013-09-09C++如何實(shí)現(xiàn)簡(jiǎn)單的計(jì)時(shí)器詳解
因?yàn)樽罱e著無(wú)聊就想著要不用C++寫(xiě)點(diǎn)什么東西,仔細(xì)想了想其實(shí)自己的C++學(xué)的也不怎么好,寫(xiě)個(gè)簡(jiǎn)單的計(jì)時(shí)器吧!所以下面這篇文章主要介紹了利用C++如何實(shí)現(xiàn)簡(jiǎn)單的計(jì)時(shí)器,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01C語(yǔ)言實(shí)現(xiàn)最長(zhǎng)遞增子序列問(wèn)題的解決方法
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)最長(zhǎng)遞增子序列問(wèn)題的解決方法,采用遞歸的方法解決該問(wèn)題,是非常經(jīng)典的一類算法,需要的朋友可以參考下2014-09-09C++ 基數(shù)排序的實(shí)現(xiàn)實(shí)例代碼
這篇文章主要介紹了C++ 基數(shù)排序的實(shí)現(xiàn)實(shí)例代碼的相關(guān)資料,這里附有實(shí)例代碼,幫助大家學(xué)習(xí)理解,需要的朋友可以參考下2016-11-11