關于C++一些特性的探究
在學習c++的過程中,也曾經學習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;
}
結果是正確的,那么看來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;
}
結果能成功調用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;
}
好了結果說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;
}
結果也是正確的,看來類B是可以繼承其他類的,也有那些繼承關系。
結論:
我們分析到c++是可以進行類嵌套的,并且可以像正常類一樣操作它,除了不能繼承嵌套它的類,目前還沒發(fā)現(xiàn)有其它特性,有興趣的可以驗證一下匿名類是否可以在c++被允許。
以上這篇關于C++一些特性的探究就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
如何通過函數(shù)指針調用函數(shù)(實現(xiàn)代碼)
指針可以不但可以指向一個整形,浮點型,字符型,字符串型的變量,也可以指向相應的數(shù)組,而且還可以指向一個函數(shù)2013-09-09

