산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C++ 함수 재정의

C++ 함수 재정의

이 자습서에서는 예제를 통해 C++의 함수 재정의에 대해 배웁니다.

알다시피 상속은 기본 클래스에서 파생 클래스를 만들 수 있게 해주는 OOP의 기능입니다. 파생 클래스는 기본 클래스의 기능을 상속합니다.

파생 클래스와 기반 클래스 모두에 동일한 함수가 정의되어 있다고 가정합니다. 이제 파생 클래스의 객체를 사용하여 이 함수를 호출하면 파생 클래스의 함수가 실행됩니다.

이를 함수 재정의라고 합니다. C++에서. 파생 클래스의 함수가 기본 클래스의 함수를 재정의합니다.

<시간>

예제 1:C++ 함수 재정의

// C++ program to demonstrate function overriding

#include <iostream>
using namespace std;

class Base {
   public:
    void print() {
        cout << "Base Function" << endl;
    }
};

class Derived : public Base {
   public:
    void print() {
        cout << "Derived Function" << endl;
    }
};

int main() {
    Derived derived1;
    derived1.print();
    return 0;
}

출력

Derived Function

여기서 동일한 기능 print() Base 모두에 정의되어 있습니다. 및 Derived 수업.

따라서 print()를 호출하면 Derived에서 개체 파생1 , print() Derived에서 Base의 함수를 재정의하여 실행됩니다. .

<그림>

보시다시피 Derived 개체에서 함수를 호출했기 때문에 함수가 재정의되었습니다. 수업.

print() Base 객체의 함수 클래스에서 함수가 재정의되지 않았을 것입니다.

// Call function of Base class
Base base1;
base1.print(); // Output: Base Function
<시간>

C++에서 재정의된 함수에 액세스

기본 클래스의 재정의된 함수에 액세스하려면 범위 확인 연산자 ::을 사용합니다. .

기본 클래스의 포인터를 사용하여 파생 클래스의 개체를 가리킨 다음 해당 포인터에서 함수를 호출하여 재정의된 함수에 액세스할 수도 있습니다.

예제 2:기본 클래스에 대한 C++ 액세스 재정의된 함수

// C++ program to access overridden function
// in main() using the scope resolution operator ::

#include <iostream>
using namespace std;

class Base {
   public:
    void print() {
        cout << "Base Function" << endl;
    }
};

class Derived : public Base {
   public:
    void print() {
        cout << "Derived Function" << endl;
    }
};

int main() {
    Derived derived1, derived2;
    derived1.print();

    // access print() function of the Base class
    derived2.Base::print();

    return 0;
}

출력

Derived Function
Base Function

여기, 이 성명서

derived2.Base::print();

print()에 액세스 기본 클래스의 기능입니다.

<그림> <시간>

예제 3:C++ 파생 클래스에서 재정의된 함수 호출

// C++ program to call the overridden function
// from a member function of the derived class

#include <iostream>
using namespace std;

class Base {
   public:
    void print() {
        cout << "Base Function" << endl;
    }
};

class Derived : public Base {
   public:
    void print() {
        cout << "Derived Function" << endl;

        // call overridden function
        Base::print();
    }
};

int main() {
    Derived derived1;
    derived1.print();
    return 0;
}

출력

Derived Function
Base Function

이 프로그램에서는 Derived 내부에 재정의된 함수를 호출했습니다. 클래스 자체.

class Derived : public Base {
   public:
    void print() {
        cout << "Derived Function" << endl;
        Base::print();
    }
};

Base::print(); 코드를 확인하세요. , Derived 내부에서 재정의된 함수를 호출합니다. 수업.

<그림> <시간>

예제 4:포인터를 사용하여 C++ 호출 재정의된 함수

// C++ program to access overridden function using pointer
// of Base type that points to an object of Derived class

#include <iostream>
using namespace std;

class Base {
   public:
    void print() {
        cout << "Base Function" << endl;
    }
};

class Derived : public Base {
   public:
    void print() {
        cout << "Derived Function" << endl;
    }
};

int main() {
    Derived derived1;

    // pointer of Base type that points to derived1
    Base* ptr = &derived1;

    // call function of Base class using ptr
    ptr->print();

    return 0;
}

출력

Base Function

이 프로그램에서 Base 포인터를 만들었습니다. 이름이 ptr인 유형 . 이 포인터는 Derived를 가리킵니다. 개체 파생1 .

// pointer of Base type that points to derived1
Base* ptr = &derived1;

print()을 호출할 때 ptr을 사용하는 함수 , Base에서 재정의된 함수를 호출합니다. .

// call function of Base class using ptr
ptr->print();

ptr Derived을 가리킴 개체, 실제로는 Base입니다. 유형. 따라서 Base의 멤버 함수를 호출합니다. .

Base를 재정의하려면 함수에 액세스하는 대신 Base에서 가상 함수를 사용해야 합니다. 수업.


C 언어

  1. C++ 연산자
  2. C++ 주석
  3. C++ 프로그래밍에서 함수에 배열 전달
  4. 프로그램 예제가 있는 C++ 함수
  5. C - 기능
  6. C++ 개요
  7. C++ 상수/리터럴
  8. C++의 연산자
  9. C++의 숫자
  10. C++ 오버로딩(연산자와 함수)