Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ฟังก์ชันเสมือนแบบอินไลน์ใน C++


ฟังก์ชันเสมือนใน C ++ ใช้เพื่อสร้างรายการพอยน์เตอร์คลาสพื้นฐานและเมธอดการเรียกของคลาสที่ได้รับมาโดยที่ไม่รู้ด้วยซ้ำว่าคลาสอ็อบเจ็กต์ที่ได้รับมานั้นเป็นอย่างไร ฟังก์ชันเสมือนได้รับการแก้ไขล่าช้า ณ รันไทม์

การใช้งานหลักของฟังก์ชันเสมือนคือการบรรลุ Runtime Polymorphism ฟังก์ชันอินไลน์ใช้เพื่อเพิ่มประสิทธิภาพของโค้ด โค้ดของฟังก์ชันอินไลน์จะถูกแทนที่ที่จุดของการเรียกใช้ฟังก์ชันอินไลน์ ณ เวลาคอมไพล์ ทุกครั้งที่มีการเรียกฟังก์ชันอินไลน์

เมื่อใดก็ตามที่มีการเรียกใช้ฟังก์ชันเสมือนโดยใช้การอ้างอิงคลาสฐานหรือตัวชี้ จะไม่สามารถอินไลน์ได้ แต่เมื่อใดก็ตามที่เรียกใช้โดยใช้วัตถุโดยไม่มีการอ้างอิงหรือตัวชี้ของคลาสนั้น สามารถอินไลน์ได้เนื่องจากคอมไพเลอร์รู้คลาสที่แน่นอนของอ็อบเจ็กต์ในเวลารวบรวม

พี>

โค้ดตัวอย่าง

#include<iostream>
using namespace std;
class B {
   public:
      virtual void s() {
         cout<<" In Base \n";
      }
};

class D: public B {
   public:
      void s() {
         cout<<"In Derived \n";
      }
};

int main(void) {
   B b;
   D d; // An object of class D
   B *bptr = &d;// A pointer of type B* pointing to d
   b.s();//Can be inlined as s() is called through object of class
   bptr->s();// prints"D::s() called"
   //cannot be inlined, as virtualfunction is called through pointer.
   return 0;
}

ผลลัพธ์

In Base
In Derived