2013-10-09 2 views
-2

C에서, 당신은 다음과 같이 숨어 데이터를 얻을 수 있습니다 C에서의 데이터 숨김, 다형성?

 
//Library header 
typedef struct foo* Alias; 
//other stuff.... 

//Library source, can be changed to whatever 
// as long as foo is defined 
struct foo{ 
    int date; 
}; 
//(Type Alias -> date;// is accessible 
//then main class 
int main(){ 
    Alias made; 
    made -> date;// not accessable 
} 

그래서이 struct foo 또는 Alias 여러 소스 파일 주어진 다형성 동작을 억제 할 수 있음을 의미합니까?

+1

다형성 행동이란 무엇을 의미합니까? – StoryTeller

답변

2

"... struct foo 또는 Alias은 여러 소스 파일이 주어진다면 다형성을 저해 할 수 있습니까?"

당신이 다형성 (polymorphism)을 참조하는 경우 (예에서 인스턴스 별 행동 를 호출 런타임를 기반으로 객체 지향 개념) 다음 NO는 사실은 라이브러리의 구현은을 제공 할 것 다른 struct 정의는이 동작이 컴파일 시간에 정의되어 있기 때문에 다형성과 아무 관련이 없습니다.


또한

typedef struct foo* Alias; 

단지 형 struct foo* 별칭을 만들고 있습니다과 숨 깁니다 Alias포인터 있다는 정보를 제공합니다. 당신이 할 때

은 그런 : 아무것도하지만 정의되지 않은 동작 결과 초기화되지 않은 포인터를 역 참조입니다

struct foo* made; 
made -> date; 

: 는

Alias made; 
made -> date; 

실제로에 해당합니다.

+1

질문을 읽었습니까? – Art

+0

@Art : 죄송합니다. 내 대답을 내가 편집 한 것보다 빨리 편집 할 수 있다고 생각했습니다. – LihO