C++의 함수 재정의 설명
게시 됨: 2022-11-09함수란?
함수는 프로그램에서 규정된 작업을 수행하기 위한 코드에 속하는 부분입니다. 상속 구현을 재정의하는 함수를 배우려면 상속에 대한 직접적인 지식을 갖는 것이 중요합니다. C++ 함수는 작업을 실행하기 위해 함께 묶인 명령문의 모음입니다. 모든 프로그램에는 main() 함수가 있고 특정 프로그램에는 추가된 함수가 있습니다. 함수 선언은 함수 이름, 반환 유형 및 매개 변수를 컴파일러로 보내 함수 정의에 따라 함수 본문을 결정합니다. 함수는 프로시저, 메서드 또는 서브루틴이 될 수 있으며 모든 C++ 함수는 헤더와 본문으로 구성됩니다.
C++ 함수의 구문:-
return_type function_name(매개변수 목록) {
기능체
}
구성품 :-
- 반환 유형 - 함수의 반환 값 유형을 나타냅니다.
- 함수 이름 - 함수 시그니처와 매개변수 목록을 구성하는 함수의 이름을 나타냅니다.
- 매개변수 - 함수가 반환하는 값에 대한 자리 표시자입니다. 함수가 호출될 때 매개변수에 전달된 값을 실제 매개변수라고 합니다.
- 함수 본문 - 함수 본문은 함수의 작업을 정의하는 명령문 목록으로 구성됩니다.
함수를 호출하는 방법
함수는 사용 전에 호출되거나 호출되어야 하며, 그 후에 필요한 작업을 수행하기 위해 제어가 전달됩니다. return 문은 이후에 주 프로그램에 제어를 되돌려줍니다. 함수를 호출하려면 매개변수와 함수 이름을 전달해야 합니다. 인수는 호출하는 동안 여러 방법으로 함수에 전달할 수 있습니다. 통화 유형은 다음과 같습니다.
- 가치에 의한 호출
- 참조로 호출
- 포인터로 호출
세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정을 배우십시오. 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
C++에서 함수 재정의
C++ 재정의는 동일한 이름이 지정된 함수가 정의되는 아이디어입니다. 재정의의 기본 클래스 함수는 파생 클래스 내에서 재정의되어 기본 클래스 기능을 재정의합니다. 런타임 다형성을 구현하는 것도 함수 재정의로 정의할 수 있습니다. 여기에서 프로그램의 런타임이 기능을 재정의합니다.
함수 재정의를 통해 프로그래머는 부모 클래스에 있는 자식 클래스의 함수를 사용할 수 있습니다. 결과적으로 자식 클래스는 부모 클래스에서 찾은 모든 데이터 멤버와 멤버 함수를 상속합니다. 자식 클래스 기능을 재정의하려면 함수 재정의를 구현해야 합니다. 함수 재정의는 자식 클래스 내에서 부모 클래스 함수의 새 버전을 만드는 것을 말합니다.
C++에서 함수 재정의를 구현하는 구문
기반 클래스와 파생 클래스 모두에 정의된 동일한 함수가 파생 클래스의 객체를 사용하여 호출되면 파생 클래스 함수를 실행합니다. 이것은 C++에서 함수 재정의입니다.
아래는 C++에서 재정의하는 함수 구현에 가장 많이 사용되는 구문입니다.
// 함수 재정의를 시연하기 위한 C++ 프로그램
#include <iostream>
네임스페이스 std 사용
클래스 베이스 {
공공의:
무효 인쇄() {
cout << "기본 기능" << endl;
}
};
클래스 파생: 공개 기본 {
공공의:
무효 인쇄() {
cout << "파생 함수" << endl;
}
};
정수 메인() {
파생 파생1;
파생1.print();
반환 0;
}
산출
파생 함수
이것은 파생 클래스 내에서 기본 클래스 함수를 재정의합니다. 따라서 return-type, function_parameters 및 function_name은 함수 재정의를 달성하기 위해 동일해야 합니다.
소프트웨어 엔지니어링에 대한 인기 코스 및 기사
인기 프로그램 | |||
소프트웨어 개발의 이그 제 큐 티브 PG 프로그램 - IIIT B | 블록체인 인증 프로그램 - PURDUE | 사이버 보안 인증 프로그램 - PURDUE | 컴퓨터 과학 석사 - IIIT B |
기타 인기 기사 | |||
미국의 클라우드 엔지니어 급여 2021-22 | 미국의 AWS 솔루션 아키텍트 급여 | 미국의 백엔드 개발자 급여 | 미국의 프론트엔드 개발자 급여 |
미국 웹 개발자 급여 | 2022년 스크럼 마스터 인터뷰 질문 | 2022년 사이버 보안 분야에서 경력을 시작하는 방법은 무엇입니까? | 공학도를 위한 미국에서의 직업 선택 |
C++에서 함수 재정의가 작동하는 방식
OOP는 파생 클래스가 상위 클래스의 기능을 상속하도록 허용해야 합니다. 함수 재정의를 사용하면 프로그래머가 특정 파생 클래스의 클래스 내의 모든 기능을 재정의할 수 있습니다. 이것은 자식 클래스에 기능 변형이 필요할 때 특히 유용합니다.
아래는 더 나은 이해를 위해 C++에서 함수 재정의의 간단한 예입니다.
#include <iostream>
네임스페이스 std 사용
클래스 부모 클래스
{
공공의:
가상 무효 인쇄()
{
cout << "\n이것은 print() 메소드입니다"
"BaseClass";
}
};
클래스 파생 클래스 : 공개 부모 클래스
{
공공의:
// 함수 재정의 – 새로운 정의
// 기본 클래스의 출력 메소드
무효 인쇄()
{
cout << "\n이것은 print() 메소드입니다"
"파생 클래스";
}
};
// 드라이버 코드
정수 메인()
{
파생 클래스 개체;
obj.print();
}
C++에서 재정의된 함수에 액세스
범위 확인 연산자는 C++에서 기본 클래스의 재정의된 함수에 액세스하는 데 사용됩니다. 재정의된 함수는 기본 클래스 포인터를 사용하여 파생 클래스의 개체를 가리킨 다음 포인터에서 함수를 호출하여 액세스할 수도 있습니다.
// 오버라이드된 함수에 접근하는 C++ 프로그램
// 범위 확인 연산자를 사용하여 main()에서 ::
#include <iostream>
네임스페이스 std 사용
클래스 베이스 {
공공의:
무효 인쇄() {
cout << "기본 기능" << endl;
}
};
클래스 파생: 공개 기본 {
공공의:
무효 인쇄() {
cout << "파생 함수" << endl;
}
};
정수 메인() {
파생 파생1, 파생2;
파생1.print();
// Base 클래스의 print() 함수에 접근
파생2.Base::print();
반환 0;
}
산출
파생 함수
기본 기능
구문의 문; 파생2.Base::print(); Base 클래스의 print() 함수에 대한 액세스를 제공합니다.
파생 클래스에서 재정의된 함수 호출
상속을 사용하여 함수의 동작을 변경할 수 있습니다. 그러나 때로는 기본/상위 클래스 기능을 변경하거나 교체할 필요가 없습니다. 대신 더 많은 기능을 추가해야 합니다.
다음은 파생 클래스에서 재정의된 호출 함수를 사용하는 예입니다.
// 오버라이드된 함수를 호출하는 C++ 프로그램
// 파생 클래스의 멤버 함수에서
#include <iostream>
네임스페이스 std 사용
클래스 베이스 {
공공의:
무효 인쇄() {
cout << "기본 기능" << endl;
}
};
클래스 파생: 공개 기본 {
공공의:
무효 인쇄() {
cout << "파생 함수" << endl;
// 오버라이드된 함수 호출
기본::인쇄();
}
};
정수 메인() {
파생 파생1;
파생1.print();
반환 0;
}
산출
파생 함수
기본 기능
이 프로그램에서 재정의된 함수는 Derived 클래스 내에서 호출되었습니다.
클래스 파생: 공개 기본 {
공공의:
무효 인쇄() {
cout << "파생 함수" << endl;
기본::인쇄();
}
};
Base::print(); 코드는 Derived 클래스 내에서 재정의된 함수를 호출합니다.
함수 오버로딩 대 함수 오버라이드
일반적으로 파생 및 기본 클래스 내에서 수행되는 컴파일 타임에 함수 오버로딩을 수행할 수 있습니다. 데이터 유형이나 매개변수의 반환 유형과 같은 각 함수의 서명을 변경하여 둘 이상의 함수 정의를 제공합니다.
반면에 기능 재정의는 런타임에 달성할 수 있습니다. 재정의의 기본 클래스는 동일한 매개 변수와 동일한 반환 유형을 사용하여 파생 클래스에서 재정의됩니다. 이 두 기능을 다르게 만드는 다른 기능이 무엇인지 알아보겠습니다.
재정의 | 과부하 | |
계승 | 클래스 상속 필요 | 클래스 상속이 필요하지 않음 |
기능 서명 | 매개변수의 유형이나 수에서 서명이 다릅니다. | 함수 서명은 동일하게 유지 |
기능 범위 | 범위가 다른 기능 | 동일한 범위를 소유함 |
기능 동작 | 파생 클래스 함수가 기본 클래스 함수와 다르게 또는 추가된 기능을 수행할 때 필요합니다. | 같은 이름을 가진 함수가 주어진 매개변수에 따라 다른 동작을 가질 때 필요합니다. |
결론
C++에서 함수 재정의는 메모리 공간을 절약하고 모든 코드의 가독성과 일관성을 유지하는 데 도움이 됩니다. 또한 코드를 쉽게 재사용할 수 있도록 하는 데 도움이 됩니다. 말할 필요도 없이, 함수 재정의에 대한 지식은 프로그래밍에서 미래를 내다본다면 반드시 갖추어야 할 중요한 기술입니다.
이 분야에서 경력을 시작하기 위해 신뢰할 수 있는 고급 과정에 참여하려면 upGrad에서 upGrad의 컴퓨터 과학 석사 과정에 등록할 수 있습니다 . 이 프로그램의 주요 하이라이트는 다음과 같습니다.
- MERN 스택, 마이크로서비스, 자바스크립트 등 배우기
- Cloud Labs의 건전한 학습
- Netflix, LinkedIn, Facebook 등에서 사용되는 도구로 실험해 보세요.
- 10개 이상의 프로그래밍 도구 및 언어에 대한 기술 습득
- 연중무휴 학생 지원
함수 재정의는 어떻게 발생합니까?
함수 C++ 재정의는 상속을 통해 발생합니다. 즉, 한 클래스가 다른 클래스를 상속할 때입니다. 파생 클래스와 기본 클래스가 동일한 반환 유형, 이름 및 인수 목록을 갖는 멤버 함수를 소유하는 경우 이를 함수 재정의라고 합니다.
C++에서 함수 오버로딩과 함수 오버라이드의 차이점은 무엇입니까?
함수 재정의는 함수가 기본 및 파생 클래스에서 동일한 프로토타입을 소유할 때 발생합니다. 함수 오버로딩은 하나의 클래스에 이름이 비슷한 함수가 두 개 이상 존재할 때 수행됩니다.
C++에서 함수 오버로딩의 기능은 무엇입니까?
C++에서 함수 오버로딩은 주로 코드 가독성을 향상시키는 데 사용됩니다. 프로그래머는 이를 사용하므로 수많은 함수 이름을 외울 필요가 없습니다. 여러 함수, 다른 매개변수, 동일한 이름을 가진 클래스를 오버로드라고 합니다.