C++에서는 추상화와 데이터 숨김이 있습니다. C를 통해 이것을 달성 할 수 있습니까?C에서 "변수 보호"란 무엇입니까? 어떻게 작동합니까?
답변
정적 (전역) 변수와 extern 함수를 사용하여이를 조작 할 수 있습니다.
C++의 "은폐 데이터"개념과 유사한 불완전한 파생 유형을 사용할 수 있습니다. This is a pretty well written article on the subject.
구조체를 .C 파일에 정의하고 헤더의 구조체를 '전달 선언'하십시오.
struct Car
{
char *brand;
int maxspeed;
};
을 그리고 당신의 .H 파일이 포함될 수 :
그래서 .C 파일이 들어있을 수 다음 자동차 (세터, 게터를 조작하는 함수를 작성
typedef struct Car *CarHandle;
.. .) 구조체가 정의 된 것과 동일한 .C 파일에 넣습니다. 물론 함수 프로토 타입을 헤더에 넣어야합니다.
이제 CarHandle과 CarHandle에서 작동하는 함수를 호출자가 사용할 수 있지만 Car 구조체 내부의 내용은 볼 수 없습니다.
이 개념을 ADT라고도합니다. –
C 코드에 대해 "C"대 "CPP"파일을 정의해서는 안됩니까? –
그래, .CPP 확장에 익숙해 져서이 예제에서 .C가되어야한다는 것을 잊었다. 나는 그것을 바로 잡았다. – Patrick
Peter Miehle이 언급했듯이 모듈에 전용 인 변수와 함수를 만들 수 있습니다 (컴파일러에 따라 달라지는 경우가 종종 있습니다).
모듈을 클래스와 비교할 수 있습니다. static
변수는 모듈 내에서만 액세스 할 수 있습니다. 또한 모듈 내에 static
과 같은 함수를 선언함으로써 private 함수와 동등한 것을 가질 수 있습니다.
실제 클래스와 다른 점은 인스턴스를 하나만 가질 수 있다는 것입니다. 그러나 약간의 작업만으로도 여러 인스턴스의 구현을 모방 할 수 있습니다.
High and Low-Level C에는 많은 유용한 정보가 들어 있습니다. 특히 "추상 데이터 유형"섹션을 살펴보십시오.
- 1. Objective-C에서 반환 구조체는 정확히 어떻게 작동합니까?
- 2. Object c에서 오브젝트 복사가 어떻게 작동합니까?
- 3. SQL에서 체인 변수 할당이 어떻게 작동합니까?
- 4. POE 세션에서 변수 범위 지정은 어떻게 작동합니까?
- 5. C에서 함수 오버로딩이 작동합니까?
- 6. C++ : 함수 변수 선언, 내부적으로 어떻게 작동합니까?
- 7. C에서 char 변수 비움
- 8. C에서 extern 변수 연결하기
- 9. 세션 토큰 - 어떻게 작동합니까?
- 10. 인수 전달은 어떻게 작동합니까?
- 11. C에서 환경 변수 설정
- 12. C에서 홈페이지의 매개 변수 ++
- 13. C에서 변수 크기의 행렬
- 14. Objective-C에서 'somestring'구문의 변수 유형은 무엇입니까?
- 15. CMake에서 CHECK_INCLUDE_FILE_CXX는 어떻게 작동합니까?
- 16. *,/및 %에 대해 C에서 연산자 우선 순위 그룹화는 어떻게 작동합니까?
- 17. 어떻게 작동합니까?
- 18. 어떻게 작동합니까?
- 19. 어떻게 작동합니까?
- 20. JavaScript에서 국제화는 어떻게 작동합니까?
- 21. 바이러스 백신은 어떻게 작동합니까?
- 22. C에서 스타일을 지정하는 방법은 무엇입니까?
- 23. traceroute는 어떻게 작동합니까?
- 24. strace는 어떻게 작동합니까?
- 25. Dropbox는 어떻게 작동합니까?
- 26. SQL 쿼리는 어떻게 작동합니까?
- 27. XNA 타이밍은 어떻게 작동합니까?
- 28. 프로그래밍에서 해시가 어떻게 작동합니까?
- 29. 뷰는 어떻게 작동합니까 (MVC)?
- 30. Adobe Stratus는 어떻게 작동합니까?
않는 익명의 구조 계산? – YeenFei
가능한 복제본 [C 코드를 모듈화하는 방법은 무엇입니까?] (http://stackoverflow.com/questions/1162889/what-methods-are-there-to-modularize-c-code) –