免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
“C++動態(tài)綁定”相關問題探討

一、相關問題:

1. 基類、派生類的構造和析構順序

2. 基類、派生類中virtual的取舍

二、測試代碼:

#include <iostream>
class A {
public:
    A() {
        std::cout  << "A()" << std::endl;
    }
    virtual void print() { std::cout << "A print()" << std::endl; }
    virtual ~A() {
        std::cout  << "~A()" << std::endl;
    }
};
class B : public A {
public:
    B() : A(){
        std::cout  << "B()" << std::endl;
    }
    virtual void print() { std::cout << "B print()" << std::endl; }
    virtual ~B() {
        std::cout  << "~B()" << std::endl;
    }
};
void print() {

}
int main(int argc, char *argv[])
{
    A* c = new B();
    c->print();
    delete c;
    return 0;
}

 三、探討與結(jié)論:

1. 基類、派生類的構造和析構順序為:基類構造-派生類構造-派生類析構-基類析構

上述代碼輸出結(jié)果為:

2. 基類、派生類中virtual的取舍:若要實現(xiàn)動態(tài)綁定,基類中virtual關鍵字不可舍棄,派生類中virtual關鍵字可有可無;若基類中有關鍵字virtual,則普通函數(shù)調(diào)用派生類函數(shù),析構函數(shù)先調(diào)用派生類,再調(diào)用基類;若基類中無關鍵字virtual,則普通函數(shù)和析構函數(shù)均只調(diào)用基類函數(shù)。

測試代碼1:基類無關鍵字virtual

#include <iostream>
class A {
public:
    A() {
        std::cout  << "A()" << std::endl;
    }
    void print() { std::cout << "A print()" << std::endl; }
    ~A() {
        std::cout  << "~A()" << std::endl;
    }
};
class B : public A {
public:
    B() : A(){
        std::cout  << "B()" << std::endl;
    }
    virtual void print() { std::cout << "B print()" << std::endl; }
    virtual ~B() {
        std::cout  << "~B()" << std::endl;
    }
};
void print() {

}
int main(int argc, char *argv[])
{
    A* c = new B();
    c->print();
    delete c;
    return 0;
}

 輸出結(jié)果為:

測試代碼2:派生類無關鍵字virtual

#include <iostream>
class A {
public:
    A() {
        std::cout  << "A()" << std::endl;
    }
    virtual void print() { std::cout << "A print()" << std::endl; }
    virtual ~A() {
        std::cout  << "~A()" << std::endl;
    }
};
class B : public A {
public:
    B() : A(){
        std::cout  << "B()" << std::endl;
    }
    void print() { std::cout << "B print()" << std::endl; }
    ~B() {
        std::cout  << "~B()" << std::endl;
    }
};
void print() {

}
int main(int argc, char *argv[])
{
    A* c = new B();
    c->print();
    delete c;
    return 0;
}

 輸出結(jié)果為:

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C++中成員函數(shù)的重載、覆蓋與隱藏
C++一些注意點之友元函數(shù)、虛函數(shù)以及const和volatile對象
c++反射
一個函數(shù)名后面加const表示什么意思
為什么不要在構造函數(shù)中調(diào)用虛函數(shù)
C++的虛函數(shù)表
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服