關于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++一些特性的探究就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。
上一篇:淺談C++指針(必看)
欄 目:C語言
下一篇:淺談c++中的輸入輸出方法
本文標題:關于C++一些特性的探究
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/2235.html
您可能感興趣的文章
- 04-02c語言沒有round函數(shù) round c語言
 - 01-10深入理解C++中常見的關鍵字含義
 - 01-10使用C++實現(xiàn)全排列算法的方法詳解
 - 01-10c++中inline的用法分析
 - 01-10用C++實現(xiàn)DBSCAN聚類算法
 - 01-10全排列算法的非遞歸實現(xiàn)與遞歸實現(xiàn)的方法(C++)
 - 01-10C++大數(shù)模板(推薦)
 - 01-10淺談C/C++中的static與extern關鍵字的使用詳解
 - 01-10深入C/C++浮點數(shù)在內存中的存儲方式詳解
 - 01-10深入理解C/C++混合編程
 


閱讀排行
本欄相關
- 04-02c語言函數(shù)調用后清空內存 c語言調用
 - 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
 - 04-02c語言的正則匹配函數(shù) c語言正則表達
 - 04-02c語言用函數(shù)寫分段 用c語言表示分段
 - 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
 - 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
 - 04-02c語言沒有round函數(shù) round c語言
 - 04-02c語言分段函數(shù)怎么求 用c語言求分段
 - 04-02C語言中怎么打出三角函數(shù) c語言中怎
 - 04-02c語言調用函數(shù)求fibo C語言調用函數(shù)求
 
隨機閱讀
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
 - 01-10使用C語言求解撲克牌的順子及n個骰子
 - 01-10C#中split用法實例總結
 - 08-05織夢dedecms什么時候用欄目交叉功能?
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 04-02jquery與jsp,用jquery
 - 01-10delphi制作wav文件的方法
 - 01-10SublimeText編譯C開發(fā)環(huán)境設置
 - 08-05DEDE織夢data目錄下的sessions文件夾有什
 - 01-11ajax實現(xiàn)頁面的局部加載
 


