소스 레벨 호환성:
링크 레벨 호환성:
소프트웨어의 재사용을 통해 소프트웨어 생산성을 높이고, 복잡하고 큰 규모의 소프트웨어 작성, 관리, 유지 보수를 쉽게 하기 위해서 데이터 캡슐화(자료은닉), 상속(재사용성), 다형성 등의 객체 지향적 개념을 도입
타임 체크를 엄격히 하여 실행 시간 오류의 가능성을 줄이고 디버깅을 돕는다.
실행 시간의 효율성 저하를 최소화
template <class T>
//template: 템플릿을 선언하는 키워드
//class: 제네릭 타입을 선언하는 키워드
//T: 제네릭 타입 T 선언
void swap(T& a, T& b) {
T tmp;
tmp a;
a = b;
b = tmp;
}
#include<iostream>
using namespace std;
class Circle {
int radius;//private
public:
Circle(int radius = 1) {
this->radius = radius;
}
int getRadius() {
return radius;
}
};
template<class T>
void myswap(T& a, T& b) {
T tmp;
tmp = a;
a = b;
b = tmp;
}
void main() {
int a = 4, b = 5;
myswap(a, b);
cout << "a=" << a << "," << "b=" << b << endl;
double c = 4, d = 5;
myswap(c, d);
cout << "a=" << a << "," << "b=" << b << endl;
Circle donut(5), pizza(20);
myswap(donut, pizza);
cout << "donut 반지름="
<< donut.getRadius() << endl;
cout << "pizza반지름="
<< pizza.getRadius() << endl;
}
참고
https://neos518.tistory.com/46
https://velog.io/@doorbals_512/UNSEEN-테스트-대비-C-언어의-특징
https://velog.io/@pantokrator3841/cpp-언어의-특징
https://rgy1989.tistory.com/entry/c특징
https://newindow.tistory.com/94