学習c++6日目オブジェクト呼び出しメンバー関数newキー

5186 ワード

メンバー関数を呼び出すには、次の3つの方法があります.
1、静的メンバー関数に設定し、クラス名で直接Class::fun();
2、オブジェクトobjectを作成し、objectを使用する.fun()メソッド呼び出し;
3、匿名のオブジェクトを作成し、匿名のオブジェクトを使用してClass()を呼び出す.fun();
共通の静的メンバー関数では、クラス名で呼び出すことができます.一般的な非静的メンバー関数は、オブジェクト名でのみ呼び出されます.
例:static void Afun(int n);
次の操作を行います.
① aBox.Afun(10);//オブジェクトコール②CBox::Afun(10);//クラス+役割ドメイン呼び出し
c++オブジェクトを作成する方法には、2つあります.1つは、直接作成する方法です.
(1)ListNode p=ListNode(5)
(2)もう1つはListNode p=new ListNode(5)
直接作成したオブジェクトはスタックに格納され、newで作成したオブジェクトはスタック(オペレーティングシステム)に保存されます.スタック上のオブジェクトは、スタックに保存されているローカル変数と同様に、関数の実行後に削除されます.スタックは、ストレージスペースを手動で解放する必要があります.オペレーティングシステムのスタックとスタックの違いを振り返ってみましょう.
1.スタック:コンパイラは自分で解放を割り当て、一般的にローカル変数として保存され、ワークモデルはデータ構造のスタックに似ています.
2.ヒープ:プログラマの割り当ては解放され、割り当て方法はチェーンテーブルに似ています. 
次に、new作成クラスオブジェクトの特徴についてまとめます.
  • newクラスオブジェクトの作成にはポインタ受信が必要であり、1つは初期化され、複数は
  • を使用する.
  • newクラスオブジェクト作成使用完了delete破棄
  • new作成オブジェクトはスタック空間を直接使用するが、局所的にnew定義クラスオブジェクトを使用しない場合はスタック空間
  • を使用する.
  • newオブジェクトポインタは、関数の戻り値、関数パラメータなどの
  • として広く使用する.
  • 頻繁にフィールドマージを呼び出すのはnewに適していません.new申請とメモリの解放のように
  • です.
      1
    Ctest  pTest; //     pTest ,        
    //   2
    Ctest *pTest = new Ctest();//  pTest ,        ,         
    delete pTest; //   delete                       
    //   2
    Ctest mTest;  //     ,             
    #include 
    using namespace std;
    
    //    
    class Student{
    private:  //   
        char *m_name;
        int m_age;
        float m_score;
    
    public:  //   
        void setname(char *name);
        void setage(int age);
        void setscore(float score);
        void show();
    };
    
    //       
    void Student::setname(char *name){
        m_name = name;
    }
    void Student::setage(int age){
        m_age = age;
    }
    void Student::setscore(float score){
        m_score = score;
    }
    void Student::show(){
        cout< setname("  ");
        pstu -> setage(16);
        pstu -> setscore(96);
        pstu -> show();
    
        return 0;
    }

    (1)
    #include 
    using namespace std;
    
    class Student{
    public:
        Student(char *name, int age, float score);
        void show();
    public:  //        
        static int getTotal();
        static float getPoints();
    private:
        static int m_total;  //   
        static float m_points;  //   
    private:
        char *m_name;
        int m_age;
        float m_score;
    };
    
    int Student::m_total = 0;
    float Student::m_points = 0.0;
    
    Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){
        m_total++;
        m_points += score;
    }
    void Student::show(){
        cout< show();//     ->       
        (new Student("  ", 16, 80.5)) -> show();//     ->       
        (new Student("  ", 16, 99.0)) -> show();//     ->       
        (new Student("  ", 14, 60.8)) -> show();//     ->       
    
        int total = Student::getTotal();//          
        float points = Student::getPoints();
        cout<

    (2)
    #include "stdafx.h"
     #include 
     #include 
     
     
     class Num
     {
     private:
     int a;
             std::string objectName;
     public:
             Num(std::string objectName,int a);
     void showNum();
     };
     
     Num::Num(std::string objectName,int a)
     {
     this->objectName=objectName;
     this->a=a;
     }
     
     void Num::showNum()
     {
         std::cout<objectName<a<<:endl int="" main="" num="" num1="" num2="" num3="" num1.shownum="" num2.shownum="" num3.shownum="" return0=""/>

    (2.1)
    #include 
    using namespace std;
    class point
    {
    private:
        int h,m,s;
    public:
        void show_time();//       
        void jude_h();//       
        void jude_m();//       
        void jude_s();//       
    };
    
    void point::jude_h()//       
    {
        if(h<0)
        {
            h=0;
        }
        else if(h>12)
        {
            h=12;
        }
    }
    void point::jude_m()
    {
        if(m<0||m>60)
        {
            m=0;
        }
    }
    void point::jude_s()
    {
        if(s<0||s>60)
        {
            s=0;
        }
    }
     void point::show_time()
     {
         if(h<10)
         {
             cout<

    (3)
    #include "iostream"
    using namespace std;
     
    class A
    {
    public:
        A (int _a=0, int _b=0)
        {
            this->a1 = _a;
            this->b1 = _b;
            cout << "construct function called!" << endl;
        }
        A (A &obj)
        {
            cout << "copy_constructor function called!" << endl;
        }
        ~A()
        {
            cout << "objext destory function called!" << endl;
        }
        void printf()
        {
            cout << this->a1 << " " << this->b1 << endl;
     
        }
    protected:
    private:
        int a1;
        int b1;
    };
     
    int main()
    {
        A(10, 10).printf();  //              ,    
        cout << "       ,          !" << endl;
        return 0;
    }