2013-07-16 2 views
0

초기화 목록 인수와 함께 사후 증가 연산자를 사용할 수 있습니까? 예를 들면 다음과 같습니다.초기화 목록의 사후 증가 연산자 사용

template <class T> struct MyClass 
{ 
    MyClass(T& val): myvar(val++) {/*body*/} 
    protected: T myvar; 
}; 

변경 사항의 영향을받는 생성자 코드는 무엇입니까?

+3

val의 유형은 무엇이며 참조 또는 값으로 전달됩니까? –

+1

왜 그렇게하고 싶습니까? –

+0

함수를 변경하여 변수'val'을 참조로 가져와야합니다. 맞습니까? 나는 실수했다고 생각합니다. –

답변

1

예. 가능합니다. myvar 회원은 증분 전에 val 값을 갖습니다.

val에 후 증가 연산자를 지원하는 유형이 있다고 간주해야합니다.

template <class T> struct MyClass 
{ 
    MyClass(T val): myvar(val++) {/*body*/} 
//  ^
protected: 
    T myvar; 
}; 

MyClass<int> foo(1); 

// Here myvar will have the value 1 

그리고 MyClass 생성자에 전달 val의 유형을 잊지 마세요.