> 백엔드 개발 > C++ > 본문

다형성 유형 - 임시, 포함, 매개변수화 및 강제

WBOY
풀어 주다: 2023-09-23 10:21:04
앞으로
1333명이 탐색했습니다.

多态性的类型 - 临时、包含、参数化和强制

여기서 다양한 유형의 다형성을 볼 수 있습니다. -

  • Ad-Hoc
  • 유형에는
  • parameterization
  • force
  • 이 포함됩니다.

Ad-Hoc 다형성을 오버로딩이라고 합니다. 이를 통해 동일한 이름을 가진 함수가 유형에 따라 다르게 작동할 수 있습니다. 함수와 연산자 모두 오버로드될 수 있습니다. 일부 언어에서는 연산자 오버로딩을 지원하지 않지만 함수 오버로딩이 일반적입니다.

예제

#include<iostream>
using namespace std;
int add(int a, int b) {
   return a + b;
}
string add(string a, string b) {
   return a + b; //concatenate
}
int main() {
   cout << "Addition of numbers: " << add(2, 7) << endl;
   cout << "Addition of Strings: " << add("hello", "World") << endl;
}
로그인 후 복사

출력

Addition of numbers: 9
Addition of Strings: helloWorld
로그인 후 복사

다형성을 포함하는 것을 하위 유형화라고 합니다. 이를 통해 파생 클래스를 가리키는 기본 클래스 포인터와 참조를 사용할 수 있습니다. 이것이 런타임 다형성입니다. 실행 전에는 실제 객체 유형을 알 수 없습니다. 이러한 포함 다형성을 달성하려면 C++에 가상 함수가 필요합니다.

Example

#include<iostream>
using namespace std;
class Base {
   public:
      virtual void print() {
         cout << "This is base class." << endl;
      }
};
class Derived : public Base {
   public:
      void print() {
         cout << "This is derived class." << endl;
      }
};
int main() {
   Base *ob1;
   Base base_obj;
   Derived derived_obj;
   ob1 = &base_obj; //object of base class
   ob1->print();
   ob1 = &derived_obj; //same pointer to point derived object
   ob1->print();
}
로그인 후 복사

Output

This is base class.
This is derived class.
로그인 후 복사

다형성을 강제하는 것을 캐스트라고 합니다. 이러한 유형의 다형성은 객체나 기본 요소가 다른 유형으로 변환될 때 발생합니다. 캐스팅에는 두 가지 유형이 있습니다. 암시적 변환은 컴파일러 자체를 사용하여 수행되고 명시적 변환은 const_cast, Dynamic_cast 등을 사용하여 수행됩니다.

Example

#include<iostream>
using namespace std;
class Integer {
   int val;
   public:
      Integer(int x) : val(x) {
   }
   operator int() const {
      return val;
   }
};
void display(int x) {
   cout << "Value is: " << x << endl;
}
int main() {
   Integer x = 50;
   display(100);
   display(x);
}
로그인 후 복사

Output

Value is: 100
Value is: 50
로그인 후 복사

파라메트릭 다형성을 초기 바인딩이라고 합니다. 이러한 유형의 다형성을 통해 다양한 유형에 동일한 코드를 사용할 수 있습니다. 템플릿을 사용하여 얻을 수 있습니다.

#include<iostream>
using namespace std;
template <class T>
T maximum(T a, T b) {
   if(a > b) {
      return a;
   } else {
      return b;
   }
}
int main() {
   cout << "Max of (156, 78): " << maximum(156, 78) << endl;
   cout << "Max of (A, X): " << maximum(&#39;A&#39;, &#39;X&#39;) << endl;
}
로그인 후 복사

출력

Max of (156, 78): 156
Max of (A, X): X
로그인 후 복사

위 내용은 다형성 유형 - 임시, 포함, 매개변수화 및 강제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!