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++에서 함수 오버로딩은 주로 코드 가독성을 향상시키는 데 사용됩니다. 프로그래머는 이를 사용하므로 수많은 함수 이름을 외울 필요가 없습니다. 여러 함수, 다른 매개변수, 동일한 이름을 가진 클래스를 오버로드라고 합니다.