2017-09-20 5 views
-1

이 코드 조각const K & k = K()는이 생성자 함수에서 무엇을 의미합니까?

의 목적은 무엇인가의 구문 이해하기 어려움 "CONST K & K = K를(), CONST V & V = V()"를 데?

template<typename K, typename V> 
class Entry{ 

    public: 
     typedef K Key; 
     typedef V Value; 
    public: 
     Entry(const K& k = K(), const V& v = V()) : _key(k), _value(v) {} 

    .... 
     .... 
      .... 
    private: 
     K _key; 
     V _value; 
}; 

+7

당신은 기준이 무엇인지 아십니까? 기본 함수 매개 변수가 무엇인지 아십니까? 그렇지 않다면 [좋은 C++ 책]을 받아야합니다 (http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – NathanOliver

+0

그것은 C++ 템플릿 구문입니다. K 및 V는 모든 유형의 클래스 또는 구조가 될 수 있습니다. – jesuisgenial

+0

이것은 K와 V의 인스턴스를 클래스의 private 프라퍼티에 삽입하는 것입니다. – jesuisgenial

답변

1

KV 템플릿 매개 변수입니다, 그들은 Entry의 사용자가 원하는 모든 데이터 유형이 될 수 있습니다 감사합니다.

kvEntry 생성자의 입력 매개 변수입니다. 그것들은 const 참조에 의해 전달되고 있으며 그들은 기본값이 지정되어 있습니다. K()K 유형의 임시 객체를 구성하고 V()V 유형의 임시 객체를 기본 생성합니다. Entry 오브젝트 인스턴스를 작성할 때 사용자가 명시 적 입력 값을 제공하지 않으면 기본값이 대신 사용됩니다. 예를 들어

:

Entry<int, int> e1(1, 2); 
// K = int, k = 1 
// V = int, v = 2 

Entry<int, int> e2(1); 
// aka Entry<int, int> e2(1, int()) 
// K = int, k = 1 
// V = int, v = 0 

Entry<int, int> e3; 
// aka Entry<int, int> e3(int(), int()) 
// K = int, k = 0 
// V = int, v = 0 

Entry<std::string, std::string> e4("key", "value"); 
// K = std::string, k = "key" 
// V = std::string, v = "value" 

Entry<std::string, std::string> e5("key"); 
// aka Entry<std::string, std::string> e4("key", std::string()) 
// K = std::string, k = "key" 
// V = std::string, v = "" 

Entry<std::string, std::string> e6; 
// aka Entry<std::string, std::string> e4(std::string(), std::string()) 
// K = std::string, k = "" 
// V = std::string, v = "" 
+1

OP가 당신이 그것을 할 수 있다는 것을 모르고 있다고 생각하기 때문에'K()'와'V()'가 의미하는 것에 대해 이야기하는 것은 상처를주지 않을 수도 있습니다. – templatetypedef

관련 문제