static_cast 運算子的特點

來源:互聯網
上載者:User

     static_cast運算子是標準c++中的強制類型轉換運算子。原先的c語言中是存在類型轉換的,如int型直接轉換為float型,為什麼需要引入新的類型轉換?目的是為了克服舊式c語言中類型轉換的缺陷。舊式的類型轉換是很強的一種文法,帶來的後果是引入很多不易察覺的錯誤。static_cast比舊式的類型轉換更具體,更安全,類型轉換的錯誤能在編譯期間發現。例如,const類型轉換為非const類型在編譯期間被認為是一個語法錯誤。

#include<iostream>
using namespace std ;

  class animal {
   
    public:
    void print(void) const{
        
    cout<<"this is a animal"<<endl;} 
};

class fish : public animal{
    public:
    void print(void) const{
    cout <<"this is a fish"<<endl;
}   
};

void test(animal *animalPtr)
{
    fish * fishPtr;
  fishPtr=static_cast<fish *>(animalPtr);
  //可以用static_cast進行基類向衍生類別的轉換
   //  fishPtr= animalPtr;
   //無效的類型轉換
     fishPtr->print();
     animalPtr=fishPtr;
     animalPtr->print();
}  ;  

 int main()
 {      
     animal theanimal;
     test(&theanimal);
    
     cin.get();
 }         

 //輸出的結果是 
       this is a fish
      this is a animal

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.