본문 바로가기

2009/0116

protected 멤버 "protected 멤버는 외부에서 보면 private으로 보이고, 상속 관계에서 보면 public으로 보인다" "protected 멤버는 private 멤버와 똑같다. 다만, private 멤버와 달리 상속 관계에 놓여 있는 경우에 접근을 허용 한다." -같은말;ㅋㅋ =================================================================================================== ~~~~좋은 클래스 디자인 기법에 해당하는 객체지향의 다소 원론적이 이야기~~~~ 클래스를 디자인하는데 있어서 중요한 것 중 하나가 결합도를 낮추는것이다. 결합도란 두 개의 클래스가 서로 얼마나 긴밀하게 연결 되어 있느냐를 의미한다. 긴밀한 연결이라니까 느낌상 좋.. 2009. 1. 15.
상속!! *생성자는 상속되지 않는 멤버 함수이다./상속되지 않는 멤버 함수로는 대입연산자가 잇다! ** 상속은 상속이라는 단어의 의미처럼 물려받는다는 성격이 강하다. 따라서 과거에는 "상속은 기존에 정의해 놓은 클래스를 재활용하기 위해서 필요한 문법적 요소가 상속이다."라는 것이 강했다고 한다. 물론 상속은 이러한 이점도 지니지만, 이는 상속을 하는 근본적인 이유에 해당되지는 않는다. 여기에서는 " 상속은 재활용의 목적으로만 존재하는 문법적인 요소가 아니란것을 강조하겟다" 객체지향에서 중요시하는것 중 하나는 요구사항의 변화에 따른 프로그램 유연성이다. 조금더 확장해서 말해보자면 새로운 클래스가 추가되어도 프로그램의 다른 영역에는 전혀 변경이 가해지지 않았으면 좋겟다는 생각이 든다는..... 현실세계에서 상속이라 .. 2009. 1. 15.
explicit &&&& mutable 명시적인 것만을 허용한다! : explicit // 때론 많이 쓰이기도 한다 explicit 키워드는 생성자 앞에 붙어서 묵시적인 호출을 허용하지 않는다는 것을 나타낼 때 사용된다. -객체 생성 관계를 분명히 하고자 하는경우 사용한다는... 복사생성자에서 배웟던... A a=10 -> A a(10) 이렇게 묵시적으로 변환이 이루어지는것을 의미한다. explicit 선언은 객체 생성 관계를 분명히 하고자 하는 경우 사용이 된다. 일반적으로 자주 사용되지는 않으나 프로그래머에 따라서 모든 생성자에 explicit 선언을 넣어 주기도 한다. 예외를 둔다! : mutable const로 멤버 함수가 상수화 되면 이 함수는 멤버 변수를 변형시키지 못한다. 그러나 멤버 변수가 mutable 로 선언이 된다면 상수화.. 2009. 1. 15.
클래스와 Static 프로그래밍을 하다보면 전역 변수가 어쩔수 없이 필요한 경우가 잇다. C++은 C언어처럼 절차지향적으로 프로그래밍 하는것도 가능하고 JAVA와 같은 언어처럼 완벽히 객체지향적으로 프로그래밍 하는것도 가능하다. 그래서 C++ 절차지향 프로그래밍에서 주로 사용되는 전역 변수, 전역함수라는 것을 여전히 제공하고 있다. count 를 전역변수로 하고 객체 생성시마다 1씩 증가하게 한다면 1.count가 왜 전역 변수로 존재해야 하는지 이해해야된다. 2. 전역 변수 count 는 Person 클래스에 종속적이다. 그럼에도 불구하고 전역 변수로 선언되어 있기 때문에 다른 영역에서 접근할 위험이 있다. 전역 변수 count는 Person 클래스 내에서만 접근을 허용하도록 한다면, 프로그램이 보다 안정적이 될 것이다. .. 2009. 1. 15.