關(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)文章
淺談C++日志系統(tǒng)log4cxx的使用小結(jié)詳解
本篇文章是對C++日志系統(tǒng)log4cxx的使用進行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++實現(xiàn)LeetCode(904.水果裝入果籃)
這篇文章主要介紹了C++實現(xiàn)LeetCode(904.水果裝入果籃),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07

