C 언어
이 자습서에서는 예제를 통해 C++의 함수 재정의에 대해 배웁니다.
알다시피 상속은 기본 클래스에서 파생 클래스를 만들 수 있게 해주는 OOP의 기능입니다. 파생 클래스는 기본 클래스의 기능을 상속합니다.
파생 클래스와 기반 클래스 모두에 동일한 함수가 정의되어 있다고 가정합니다. 이제 파생 클래스의 객체를 사용하여 이 함수를 호출하면 파생 클래스의 함수가 실행됩니다.
이를 함수 재정의라고 합니다. 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++ 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()
에 액세스 기본 클래스의 기능입니다.
// 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
내부에서 재정의된 함수를 호출합니다. 수업.
// 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 언어
C 함수 이 튜토리얼에서는 C 프로그래밍의 함수(사용자 정의 및 표준 라이브러리 함수 모두)를 소개합니다. 또한 프로그래밍에서 함수가 사용되는 이유를 배우게 됩니다. 함수는 특정 작업을 수행하는 코드 블록입니다. 원을 만들고 색칠하는 프로그램을 만들어야 한다고 가정합니다. 이 문제를 해결하기 위해 두 가지 함수를 만들 수 있습니다. 원 함수 만들기 색상 함수 생성 복잡한 문제를 더 작은 덩어리로 나누면 프로그램을 쉽게 이해하고 재사용할 수 있습니다. 기능 유형 C 프로그래밍에는 두 가지 유형의 함수가 있습니다. 표준
C++에서 다형성이란 무엇입니까? C++에서 다형성은 멤버 함수를 호출/호출하는 객체에 따라 다르게 동작하도록 합니다. 다형성(Polymorphism)은 여러 형태를 갖는다는 의미의 그리스어입니다. 상속을 통해 관련된 클래스 계층이 있을 때 발생합니다. 예를 들어 makeSound() 함수가 있다고 가정합니다. 고양이가 이 함수를 호출하면 야옹 소리가 납니다. 젖소가 동일한 기능을 호출하면 야옹 소리가 납니다. 우리는 하나의 기능을 가지고 있지만 상황에 따라 다르게 작동합니다. 함수에는 여러 가지 형태가 있습니다.