2011-02-06 7 views
4

C++ 코드에서 property이라는 용어로 보았습니다. 나는 그것이 C++/CLI에 연결되어 있다고 생각한다.C++/CLI의 속성은 무엇입니까?

정확히 무엇입니까?

+0

어디에서 보았습니까? 제발 전체 문장을주세요. –

답변

3

실제로 C++/CLI에 연결되었습니다 (관리되지 않는 C++에는 실제로 특성에 대한 개념이 없습니다).

속성 필드처럼 행동하지만, 내부적으로 getter 및 setter 접근 자 함수에 의해 처리되는 엔티티입니다. 스칼라 속성 (필드처럼 동작하는 곳) 또는 인덱싱 된 속성 (배열처럼 작동하는 곳) 일 수 있습니다. 이전 구문에서는 속성을 구현하기 위해 코드에서 직접 getter 및 setter 메서드를 지정해야했습니다. 사용자가 추측 할 수있는대로 잘 받아 들여지지 않았습니다. C++/CLI에서 구문은 C# -ish이며 작성하고 이해하기가 더 쉽습니다.

이 문서에서 발췌 : http://www.codeproject.com/KB/mcpp/CppCliProperties.aspx

또한 C++/CLI의 특성에 MSDN을 참조하십시오.

샘플 코드 :

private: 
    String^ lastname; 

public: 
    property String^ LastName 
    { 
     String^ get() 
     { 
     // return the value of the private field 
     return lastname; 
     } 
     void set(String^ value) 
     { 
     // store the value in the private field 
     lastname = value; 
     } 
    } 
+0

당신은 다음과 같이 썼습니다 : "로퍼는 필드처럼 행동하는 엔티티". 들판은 무엇입니까? –

+0

@lital : 필드는'class' 또는'struct'에서 직접 선언 된 변수입니다. 그것은 어떤 타입 ('String','bool','int' 등)이 될 수 있습니다. 필드를 포함하는 유형 ('class' 또는'struct')의 멤버 인 변수이기 때문에 "멤버 변수"라고하는 필드가 표시되는 경우가 있습니다. 속성의 요점은 해당 개인 필드를 공개적으로 대상 지향 디자인 원리에 맞게 노출시키는 것입니다. –

+0

필드는 클래스의 모든 메소드에서 액세스 할 수있는 변수입니다. 하지만 클래스가 무엇인지 물어보기 전에 C++에서 OOP에 대한 몇 가지 기사를 읽으시기 바랍니다. –

1

네 실제로이 관리되는 C++ 코드 또는 C++/CLI의 마이크로 소프트의 버전입니다. 이제 Get & Set Methods를 작성해야 할뿐만 아니라 속성으로 정의해야합니다. 나는 추가로 타이핑하는 것이 싫지만 'Read Only'와 'Write Only'버전의 속성은 꽤 깔끔하다.

un-managed C++ !!!

std::string GetLastName() const { return lastname;} 
void SetLastName(std::string lName) { lastname = lName;} 

'CONST이'는 읽기 전용 된 'GET'확인했다, 그리고 세트는 분명했다 :

예를 들어 당신은 (! 정확히 같은 일을 할 것입니다) 클래스로 작성할 수 있습니다. 속성을 정의하거나 문자열^대 std :: string의 혼동을 추가 할 필요가 없습니다.