<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                #### 24. 多態 **多態**按字面的意思就是多種形態。當類之間存在層次結構,并且類之間是通過繼承關聯時,就會用到多態。 C++ 多態意味著調用成員函數時,會根據調用函數的對象的類型來執行不同的函數。 下面的實例中,基類 Shape 被派生為兩個類,如下所示: ~~~ //1. 定義了一個 Person 基類,跟 Java class 差不多 class Person { public: //公共的屬性 Person(); ~Person(); Person(char *name, char *gen, int age); char *name; char *gen; int age; void setName(char *name); char *getName(); void setGen(char *gen); char *getGen(); void setAge(int age); int getAge(); /** * 虛函數 是在基類中使用關鍵字 virtual 聲明的函數。 * 在派生類中重新定義基類中定義的虛函數時,會告訴編譯器不要靜態鏈接到該函數。 * @return */ //virtual 轉移給子類實現 virtual int test() { return 10; }; }; //2. 定義 DevYK 派生類 class DevYK : public Person { public: DevYK(char *name, int age) : Person(name, "nan", age) {}; int length; DevYK(); ~DevYK(); char *getPersonName(); void setLength(int len); int getLength(); DevYK operator+(const DevYK &b); char *getName(); int test() { return -10; }; }; //3. .cpp 文件 #include "ClssSample.h" #include <iostream> using namespace std; Person::Person(char *name, char *gen, int age) { this->name = name; this->age = age; this->gen = gen; } Person::~Person() { cout << "Person 銷毀" << endl; } Person::Person() { cout << "執行 Person 空參構造函數" << endl; } void Person::setAge(int age) { this->age = age; } void Person::setName(char *name) { this->name = name; } void Person::setGen(char *gen) { this->gen = gen; } char *Person::getName() { return this->name; } char *Person::getGen() { return this->gen; } int Person::getAge() { return this->age; } DevYK::DevYK() { cout << "執行 DevYK 空參構造函數" << endl; } DevYK::~DevYK() { cout << "DevYK 銷毀" << endl; } char *DevYK::getName() { cout << "DevYK getName" << endl; return this->name; } char *DevYK::getPersonName() { return this->name; } void DevYK::setLength(int len) { this->length = len; } int DevYK::getLength() { return this->length; } // 重載 + 運算符,用于把兩個 Box 對象相加 class DevYK DevYK::operator+(const class DevYK &b) { DevYK devYk; devYk.length = this->length + b.length; return devYk; } //3. 測試 void test22() { //父類 Person *person; //定義子類 DevYK devYk("DevYK", 27); if (person) { cout << "Person\t" << person->getName() << "\t" << person->getGen() << "\t" << person->getAge() << endl; } cout << "DevYK->\t" << devYk.getName() << "\t" << devYk.getGen() << "\t" << devYk.getAge() << endl; //把 devyk 的內存地址賦值給 person person = &devYk; if (person) { cout << "Person\t" << person->getName() << "\t" << person->getGen() << "\t" << person->getAge() << endl; } cout << "DevYK 內存地址->\t" << &devYk << " Person 內存地址\t" << person << endl; //獲取子類數據 int test = person->test(); cout << "test->\t" << test << endl; } 復制代碼 ~~~ > **輸出:** > > DevYK-> DevYK getName DevYK nan 27 Person DevYK nan 27 DevYK 內存地址-> 0x7ffee1d26628 Person 內存地址 0x7ffee1d26628 test-> -10 DevYK 銷毀 Person 銷毀 **虛函數:** **虛函數** 是在基類中使用關鍵字 **virtual** 聲明的函數。在派生類中重新定義基類中定義的虛函數時,會告訴編譯器不要靜態鏈接到該函數。 我們想要的是在程序中任意點可以根據所調用的對象類型來選擇調用的函數,這種操作被稱為**動態鏈接**,或**后期綁定**。 **純虛函數:** 您可能想要在基類中定義虛函數,以便在派生類中重新定義該函數更好地適用于對象,但是您在基類中又不能對虛函數給出有意義的實現,這個時候就會用到純虛函數。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看