컴퓨터 언어/C++

[C++] C++ 24일차 Template 3 클래스 객체 활용

훈츠 2020. 5. 1. 11:55
반응형

 

안녕하세요. 훈츠입니다. 금일은 Template 키워드를 이용하여 클래스 객체가 포인터인 경우와 생성자에 적용 하는 방법에 대해 포스팅 합니다.

 

템플리트 클래스 객체 활용(template class)

  • 클래스 밖에서 포인터 선언하는 형식 (포인터는 항상 해제를 해줘야 하며,
  • 템플리트 클래스 안에 생성자가 있는 경우
  • 템프리트 클래스에 typedef 를 적용 하는 경우
  • 템플리트 클래스 함수에 초기값을 주는 경우

 

모두 일반 클래스에 적용되는 내용과 같으나, 템플리트 자체가 익숙하지 않아 다음 예제를 보시면서 익숙해지시면 사용하시는데 도움이 될것 같습니다.

 

예제1 코드  (템플리트 클래스 포인터 )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
 
template<class T> class A
{
private:
    T m_Var;
public:
    void Print();
    void Set(T var);
    T Get();
};
template <class T> void A<T>::Set(T var) {
    m_Var = var;
}
template <class T> void A<T>::Print() {
    cout << m_Var << endl;
}
template <class T> T A<T>::Get() {
    return m_Var;
}
int main()
{
    A<int>* pTr = new A<int>;
    A<int>* pTrArray = new A<int>[3];
    pTr->Set(10);
    pTr->Print();
    pTrArray[0].Set(100);
    pTrArray[1].Set(200);
    pTrArray[2].Set(300);
    pTrArray[0].Print();
    pTrArray[1].Print();
    pTrArray[2].Print();
    delete pTr;
    delete[]pTrArray;
    return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs

일반 클래스 혹은 변수를 포인터 선언하는것과 완전히 동일합니다.

 

예제2 코드 ( 생성자에 매개변수가 있고, typeDef 와 초기값 예제)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
template<class T> class A
{
private
    T m_Var;
    
public:
    // 초기값 및 매개변수 
    A(T var = 20) :m_Var(var) {}
    void Print();
    void Set(T var);
    T Get();
};
 
template <class T> void A<T>::Set(T var) {
    m_Var = var;
}
template <class T> void A<T>::Print() {
    cout <<m_Var <<endl;
}
template <class T> T A<T>::Get() {
    return m_Var;
}
 
//typeDef 선언
typedef A<int> intA;
 
 
int main()
{
    A<int>* pTr = new A<int>(90);
    
    pTr->Set(10);
    pTr->Print();
    
    //typedef 예시
    intA typeDef(30);
 
    //typedef 초기값 없는 예시
    intA typeDefNoinitValue;
 
    delete pTr;
    
    return 0;
 
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs
typeDef 는 C 언어내용과 동일하며, 익숙하지 않으시면 다음 포스팅을 참고 하세요. 

https://rain2002kr.tistory.com/153?category=382972

 

 

[C] C언어 7일차 구조체와 TypeDef

안녕하세요. 훈츠 입니다. 이번 시간에는 구조체를 정의 해보려고 합니다. 구조체 개념 : 사용자가 정의 하는 데이터 형식 구성 : 필드 또는 멤버인 변수로 구성. 단, void 형은 사용할 수 없다. 멤버 접근 연산..

rain2002kr.tistory.com

 

 

 

 

 

 

 

반응형