C++日記

最近在玩C++,想找個地方把自己學習的感悟記錄下來。於是就想到了這個地方,這篇文章會不斷的更新,希望自己能堅持......

一 關於指向對象成員函數的指針的問題

     定義指針:數據類型名 (類名::*指針變量名)(參數列表);

     指針賦值:指針變量名=&類名::成員函數名;//千萬不要把函數的參數列表帶上

     引用:(對象名.*指針變量名(參數列表);//前面那對括號一定要

     另外,只有公用成員才能這樣通過指針來訪問

     eg.

          class test

          {

           public:

                  int getarea();

           ......

          };

         test A;

         int (test::*p)();

         p=&test::getarea;//不要寫成:p=&test::getarea();

         cout<<(A.*p)()<<endl;//不要寫成:cout<<A.*p<<endl;cout<<A.*p()<<endl;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

二 關於純虛函數

    一般形式:

        virtual 函數類型 函數名 (參數列表) =0;

    注意問題:

         1.一個類中含有純虛函數,叫做抽象類.抽象類只能被繼承,不能被實例化.

            //eg.

                 現在我有一個抽象類circle,那麼我就不能在類外出現這樣的語句:  circle A;

         2.純虛函數在派生類中必須重載,否則不能通過.並且重載時,函數的形式要與聲明純虛函數時一樣.

            //eg.

                 virtual double get_a ()const=0;

                 virtual double get_a()   //錯誤,要加上const

                  {return 3.14;}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

三 申明指針必須初始化

  eg.  char *a;

          cin>>a;   //錯誤,由於指針沒有初始化,很容易跑飛

          應該這樣:

          char *a=new char[10];  //a只能存儲10個字符

          cin>>a;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章