43.c++指針類型轉換


  • 數據類型轉換(static_cast)
    //數據類型轉換
    printf("%d\n", static_cast<int>(10.2));

     

  • 指針類型轉換(reinterpret_cast)
    1 指針類型轉換
    2 int *pint = new int(1);
    3 char *pch = reinterpret_cast<char *>(pint);

     

  • 涉及到const的指針類型轉換(const_cast)
    1 const int num[5] = { 1,2,3,4,5 };
    2 const int *p = num;
    3 int *pint = const_cast<int *>(p);

     

     

  • 子類轉化為父類(dynamic_cast)
     1 class man
     2 {
     3 public:
     4     int name;
     5     //加上virtual關鍵字,可以使得父類用子類初始化后可以調用子類的函數
     6     virtual void run()
     7     {
     8         cout << "man is running" << endl;
     9     }
    10 };
    11 
    12 class son :public man
    13 {
    14 public:
    15     void run()
    16     {
    17         cout << "son is running" << endl;
    18     }
    19 };
    20 
    21 void main()
    22 {
    23     /*man man1;
    24     son son1;
    25     man *p = &man1;
    26     p->run();
    27     p = &son1;
    28     p->run();*/
    29     man *pman = new man;
    30     son *pson = new son;
    31     //子類指針轉換為父類指針,但是還是調用子類的函數
    32     man *pfu = dynamic_cast<man *>(pson);
    33     pfu->run();
    34     system("pause");
    35 }

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM