日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

c++ 纯虚函数和抽象类那些事(二)实现抽象类

發布時間:2025/4/5 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++ 纯虚函数和抽象类那些事(二)实现抽象类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

抽象類中:在成員函數內可以調用純虛函數,在構造函數/析構函數內部不能使用純虛函數。

如果一個類從抽象類派生而來,它必須實現了基類中的所有純虛函數,才能成為非抽象類

/*** @file abstract.cpp* @brief 抽象類中:在成員函數內可以調用純虛函數,在構造函數/析構函數內部不能使用純虛函數* 如果一個類從抽象類派生而來,它必須實現了基類中的所有純虛函數,才能成為非抽象類* @author 光城* @version v1* @date 2019-07-20*/#include<iostream> using namespace std;class A { public:virtual void f() = 0; // 純虛函數void g(){ this->f(); };A(){}; //A 的構造函數 }; class B:public A{ public:void f(){ cout<<"B:f()"<<endl;}; }; int main(){B b;b.g();return 0; }

3.重要點?

  • 純虛函數使一個類變成抽象類
/*** @file interesting_facts1.cpp* @brief 純虛函數使一個類變成抽象類* @author 光城* @version v1* @date 2019-07-20*/#include<iostream> using namespace std;/*** @brief 抽象類至少包含一個純虛函數*/ class Test {int x; public:virtual void show() = 0;int getX() { return x; } };int main(void) {Test t; //error! 不能創建抽象類的對象return 0; }
  • 抽象類類型的指針和引用
/*** @file interesting_facts2.cpp* @brief 抽象類類型的指針和引用* @author 光城* @version v1* @date 2019-07-20*/#include<iostream> using namespace std;/*** @brief 抽象類至少包含一個純虛函數*/ class Base {int x; public:virtual void show() = 0;int getX() { return x; }}; class Derived: public Base { public:void show() { cout << "In Derived \n"; }Derived(){} }; int main(void) {//Base b; //error! 不能創建抽象類的對象//Base *b = new Base(); error!Base *bp = new Derived(); // 抽象類的指針和引用 -> 由抽象類派生出來的類的對象bp->show();return 0; }
  • 如果我們不在派生類中覆蓋純虛函數,那么派生類也會變成抽象類。
/*** @file interesting_facts3.cpp* @brief 如果我們不在派生類中覆蓋純虛函數,那么派生類也會變成抽象類。* @author 光城* @version v1* @date 2019-07-20*/#include<iostream> using namespace std; class Base { int x; public: virtual void show() = 0; int getX() { return x; } }; class Derived: public Base { public: // void show() { } }; int main(void) { Derived d; //error! 派生類沒有實現純虛函數,那么派生類也會變為抽象類,不能創建抽象類的對象return 0; }

總結

以上是生活随笔為你收集整理的c++ 纯虚函数和抽象类那些事(二)实现抽象类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。