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

