8.1(수) C++ - typename

from Study/C++ 2007/08/02 17:17 view 19962

#include <iostream>

using namespace std;

 

// typename 문법이야기

// 1.2 의 중복문제가 발생해서 이를 해결하고자 typename 키워드를 만들었다.

// 그러고 보니 class T 라는 것의 의미가 명확하지가 않는 것을 알 수가 있었다.

// class Tint와 같은 타입도 받을 수 있기 때문에 typname으로 바뀌게 된 것이다.!!!

// 하지만 class는 여전히 지원된다.

 

template<typename T> void foo( T a )

{

        typename T::B* p;
        // 1. T
안에 내포클래스로 B가 있는데 그 포인터 p를 선언.

        // 2. T안에 B라는 static 변수가 있는데 곱하기 p를 한다.

}

 

class A

{

public:

        static int B;

 

        class B

        {

        };

};

 

void main()

{

        A a;

        foo( a );

}


//////////////////////////////////////////////////////////////////// 
// 디폴트 인자

template<typename T = int, int n = 10> class Stack

{

        T buf[n];

};

 

void main()

{

        Stack<int, 10> s;

        Stack<int> s2;

 

        stack<> s3;    // 모두 default 사용

}

Tag |

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다