C 언어
이 튜토리얼에서는 예제를 통해 C++의 클래스 템플릿에 대해 배울 것입니다.
템플릿은 일반 프로그램을 작성할 수 있게 해주는 C++의 강력한 기능입니다. 템플릿을 구현할 수 있는 두 가지 방법이 있습니다.
함수 템플릿과 유사하게 클래스 템플릿을 사용하여 다양한 데이터 유형으로 작업할 단일 클래스를 생성할 수 있습니다.
클래스 템플릿은 코드를 더 짧고 관리하기 쉽게 만들 수 있으므로 편리합니다.
<시간>
클래스 템플릿은 template
키워드로 시작합니다. <>
내부에 템플릿 매개변수가 뒤따릅니다. 그 뒤에 클래스 선언이 옵니다.
template <class T>
class className {
private:
T var;
... .. ...
public:
T functionName(T arg);
... .. ...
};
위 선언에서 T
사용된 데이터 유형의 자리 표시자인 템플릿 인수이고 class
는 키워드입니다.
클래스 본문 내에서 멤버 변수 var 및 멤버 함수 functionName()
둘 다 T
유형입니다. .
클래스 템플릿을 선언하고 정의한 후에는 다른 클래스나 함수(예:main()
함수) 다음 구문을 사용하여
className<dataType> classObject;
예를 들어,
className<int> classObject;
className<float> classObject;
className<string> classObject;
<시간>
// C++ program to demonstrate the use of class templates
#include <iostream>
using namespace std;
// Class template
template <class T>
class Number {
private:
// Variable of type T
T num;
public:
Number(T n) : num(n) {} // constructor
T getNum() {
return num;
}
};
int main() {
// create object with int type
Number<int> numberInt(7);
// create object with double type
Number<double> numberDouble(7.7);
cout << "int Number = " << numberInt.getNum() << endl;
cout << "double Number = " << numberDouble.getNum() << endl;
return 0;
}
출력
int Number = 7 double Number = 7.7
이 프로그램에서. Number
클래스 템플릿을 만들었습니다. 코드로
template <class T>
class Number {
private:
T num;
public:
Number(T n) : num(n) {}
T getNum() { return num; }
};
변수 num , 생성자 인수 n 및 함수 getNum()
T
유형입니다. 또는 반환 유형이 T
입니다. . 즉, 모든 유형이 될 수 있습니다.
main()
에서 , 객체를 생성하여 클래스 템플릿을 구현했습니다.
Number<int> numberInt(7);
Number<double> numberDouble(7.7);
코드 Number<int>
를 확인하세요. 및 Number<double>
위의 코드에서.
이것은 int
각각에 대한 클래스 정의를 생성합니다. 및 float
, 그에 따라 사용됩니다.
클래스 템플릿의 객체를 선언할 때 유형을 지정하는 것은 필수입니다. 그렇지 않으면 컴파일러에서 오류가 발생합니다.
//Error
Number numberInt(7);
Number numberDouble(7.7);
<시간> 클래스 템플릿 외부에 함수를 정의해야 한다고 가정합니다. 다음 코드로 이 작업을 수행할 수 있습니다.
template <class T>
class ClassName {
... .. ...
// Function prototype
returnType functionName();
};
// Function definition
template <class T>
returnType ClassName<T>::functionName() {
// code
}
코드 template <class T>
클래스 외부에서 함수를 정의하는 동안 반복됩니다. 이것은 필수이며 구문의 일부입니다.
예 1의 코드를 보면 , getNum()
함수가 있습니다. 클래스 템플릿 Number
안에 정의되어 있습니다. .
getNum()
을 정의할 수 있습니다. Number
외부 다음 코드로:
template <class T>
class Number {
... .. ...
// Function prototype
T getnum();
};
// Function definition
template <class T>
T Number<T>::getNum() {
return num;
}
<시간> 이 프로그램은 클래스 템플릿을 사용하여 두 변수 num1의 덧셈, 뺄셈, 곱셈 및 나눗셈을 수행합니다. 및 num2 .
변수는 모든 유형이 될 수 있지만 int
만 사용했습니다. 및 float
이 예의 유형입니다.
#include <iostream>
using namespace std;
template <class T>
class Calculator {
private:
T num1, num2;
public:
Calculator(T n1, T n2) {
num1 = n1;
num2 = n2;
}
void displayResult() {
cout << "Numbers: " << num1 << " and " << num2 << "." << endl;
cout << num1 << " + " << num2 << " = " << add() << endl;
cout << num1 << " - " << num2 << " = " << subtract() << endl;
cout << num1 << " * " << num2 << " = " << multiply() << endl;
cout << num1 << " / " << num2 << " = " << divide() << endl;
}
T add() { return num1 + num2; }
T subtract() { return num1 - num2; }
T multiply() { return num1 * num2; }
T divide() { return num1 / num2; }
};
int main() {
Calculator<int> intCalc(2, 1);
Calculator<float> floatCalc(2.4, 1.2);
cout << "Int results:" << endl;
intCalc.displayResult();
cout << endl
<< "Float results:" << endl;
floatCalc.displayResult();
return 0;
}
출력
Int results: Numbers: 2 and 1. 2 + 1 = 3 2 - 1 = 1 2 * 1 = 2 2 / 1 = 2 Float results: Numbers: 2.4 and 1.2. 2.4 + 1.2 = 3.6 2.4 - 1.2 = 1.2 2.4 * 1.2 = 2.88 2.4 / 1.2 = 2
위의 프로그램에서 우리는 클래스 템플릿 Calculator
를 선언했습니다. .
클래스에는 T
유형의 두 개인 멤버가 포함되어 있습니다. :num1 &num2 , 그리고 멤버를 초기화하는 생성자.
add()
도 있습니다. , subtract()
, multiply()
및 divide()
반환 유형이 T
인 함수 . void
도 있습니다. 함수 displayResult()
다른 함수의 결과를 출력합니다.
main()
에서 , Calculator
의 두 개체를 만들었습니다. :int
용 데이터 유형 및 float
에 대한 다른 유형 데이터 유형.
Calculator<int> intCalc(2, 1);
Calculator<float> floatCalc(2.4, 1.2);
이렇게 하면 컴파일러에서 컴파일하는 동안 각 데이터 유형에 대해 두 개의 클래스 정의를 생성하라는 메시지가 표시됩니다.
<시간>C++에서는 여러 템플릿 매개변수를 사용할 수 있으며 해당 매개변수에 기본 인수를 사용할 수도 있습니다. 예를 들어,
template <class T, class U, class V = int>
class ClassName {
private:
T member1;
U member2;
V member3;
... .. ...
public:
... .. ...
};
<시간>
#include <iostream>
using namespace std;
// Class template with multiple and default parameters
template <class T, class U, class V = char>
class ClassTemplate {
private:
T var1;
U var2;
V var3;
public:
ClassTemplate(T v1, U v2, V v3) : var1(v1), var2(v2), var3(v3) {} // constructor
void printVar() {
cout << "var1 = " << var1 << endl;
cout << "var2 = " << var2 << endl;
cout << "var3 = " << var3 << endl;
}
};
int main() {
// create object with int, double and char types
ClassTemplate<int, double> obj1(7, 7.7, 'c');
cout << "obj1 values: " << endl;
obj1.printVar();
// create object with int, double and bool types
ClassTemplate<double, char, bool> obj2(8.8, 'a', false);
cout << "\nobj2 values: " << endl;
obj2.printVar();
return 0;
}
출력
obj1 values: var1 = 7 var2 = 7.7 var3 = c obj2 values: var1 = 8.8 var2 = a var3 = 0
이 프로그램에서는 ClassTemplate
라는 클래스 템플릿을 만들었습니다. , 세 개의 매개변수가 있으며 그 중 하나는 기본 매개변수입니다.
template <class T, class U, class V = char>
class ClassTemplate {
// code
};
class V = char
코드를 확인하세요. . 즉, V
기본 유형이 char
인 기본 매개변수입니다. .
ClassTemplate
내부 , 우리는 3개의 변수 var1를 선언합니다. , var2 및 var3 , 각각은 템플릿 매개변수 중 하나에 해당합니다.
class ClassTemplate {
private:
T var1;
U var2;
V var3;
... .. ...
... .. ...
};
main()
에서 , ClassTemplate
의 두 개체를 만듭니다. 코드로
// create object with int, double and char types
ClassTemplate<int, double> obj1(7, 7.7, 'c');
// create object with double, char and bool types
ClassTemplate<double, char, bool> obj2(8, 8.8, false);
여기,
객체 | 티 | 유 | V |
---|---|---|---|
obj1 | int | double | char |
obj2 | double | char | bool |
obj1의 경우 , T = int
, U = double
및 V = char
.
obj2의 경우 , T = double
, U = char
및 V = bool
.
C 언어
수업이란 무엇입니까? C++ 클래스는 데이터와 데이터를 조작하기 위한 메서드를 하나로 결합합니다. 클래스는 또한 객체의 형태를 결정합니다. 클래스에 포함된 데이터와 메서드를 클래스 멤버라고 합니다. 클래스는 사용자 정의 데이터 유형입니다. 클래스 멤버에 액세스하기 위해 클래스의 인스턴스를 사용합니다. 클래스를 개체에 대한 청사진으로 볼 수 있습니다. 클래스는 집의 프로토타입이 됩니다. 문, 창문, 바닥 등의 위치와 크기를 보여줍니다. 이러한 설명에서 집을 지을 수 있습니다. 집이 대상이 됩니다. 프로토타입으로 많은 집을 만들 수
1) C++에서 클래스가 무엇인지 설명하세요. C++에서 클래스는 하나의 이름으로 함수 및 관련 데이터의 모음으로 정의할 수 있습니다. 그것은 개체의 청사진입니다. C++ 프로그램은 여러 클래스로 구성될 수 있습니다. 2) C++에서 클래스를 지정하는 방법은 무엇입니까? class 키워드 뒤에 식별자(클래스 이름)를 사용하여 C++에서 클래스를 지정할 수 있습니다. 중괄호 안에 클래스의 본문이 정의됩니다. 마지막에 세미콜론으로 끝납니다. For example, class name{ // some data // some fu