728x90
반응형
C++ 언어의 아킬레스건
C++ 언어는 C 코드와의 호환성이라는 중요한 목표로 설계되어, 기조의 C 코드를 재사용할 수 있게 되었지만, 그것으로 인해 객체 지향의 핵심 개념인 캡슐화(encapsulation)의 원칙이 다소 무너졌다.
캡슐화의 기본 원칙은 코드와 데이터를 외부의 접근으로부터 보호하기 위해, 변수와 함수를 캡슐 즉 클래스 안에 선언하도록 하는 강력한 원치이다. Java 언어는 이 원칙을 굳건히 지키고 있지만, C++에서는 C 언어로 작성된 프로그램을 수용하기 위해, 함수 바깥에 전역 변수를 선언할 수 있는 C 언어의 특성을 받아들일 수 밖에 없었다.
결국 이것 때문에, C++에서 클래스라는 캡슐 바깥에 함수나 전역 변수를 만들 수 있게 허용하였으며, C 프로그래밍에 있었던 전역 변수의 사용에 따른 부작용(side effect)이 여전히 존재하게 된다. 비유하자면, 집 안에 있어야 하는 내 소유물들을 집 바깥에 두어서 오가는 사람들이 함부로 건드릴 수 있게 된 것과 같다.
반응형
'C++ > C++ 기본' 카테고리의 다른 글
#include <iostream> (0) | 2018.06.29 |
---|---|
main 함수 (0) | 2018.06.29 |
주석문 (0) | 2018.06.29 |
C++ 실행 프로그램 만들기 (0) | 2018.06.29 |
C++ 언어의 특징 (0) | 2018.06.29 |