&연산자를 private에 넣어버려 함수 밖에서 reference를 호출하지 못하는 상황임의의 포인터 타입끼리 변환을 허용하는 캐스트 연산자포인터 또는 레퍼런스의 const를 잠깐 제거해 주는 용도volatile을 잠깐 제거해 주기도 함.외부적인 요인으로 값이 얼마든지
c++의 함수를 overloading 할 때 사용하는 방법단순히 이야기 하자면, int를 이용하여 서로 다른 type을 만드는 방법이다.다른 int를 사용하면 다른 type이 된다.static dispatching을 할 수 있다.컴파일 시간에 호출될 함수를 결정하는 것
c++에서 friend는 외부의 함수에게 내부 private까지도 접근할 수 있는 권한을 준다.encapsulation을 침해하기도 한다.이러한 방법으로 temp1안에 있는 private를 꺼낼 수 있다.따라서 괜히 private로 보호한 정보를 노출 시킬 위험이 있어
하나의 generic abstraction에 여러 개의 추상화를 숨기는 것예)Number이라는 class안에 복소수, 실수를 만들고 그들의 덧셈 등을 포함시킬 수 있다!이를 이용하여 Complex와 RealNumber class가 Number의 class를 상속한다.
의도 overload operator를 namespace안에 둘 수 없거나 함수 탬플릿에 Overloading resolution을 할 수 없을 경우 사용하는 Idiom Overload resolution 재정의된 함수를 호출할 때 컴파일러는 함수 인자의 의존하여 함
c++에서는 다른 derived class가 실행되기 전에 base class가 initialized된다.이는 derived class의 요소들이 base class를 사용하기 때문이다.그러므로 모든 base part는 다른 derived class전에 생성되어야 한다
plain old dataPDS(passive data structure)이라고도 한다.복잡한 레이아웃을 갖지 않는다.(가상함수 등)유저가 정의한 복사 의미론을 갖지 않는다.간단한 기본 생성자를 갖고 있다.C++에서 양방향 맵을 빌드하기 위한 라이브러리로 사용하며, e
동적 바인딩, 런타임에 성격이 결정되는 것반대는 static binding이 있으며, static binding은 컴파일 시간에 성격이 결정되어 런타임 시간이 짧다.CRTP, 클래스 X가 X자신을 템플릿 인자로 사용하여 인스턴스화 되는 클래스 템플릿으로 파생됨.개체가
만약 어떤 함수가 다른 함수를 implement한다고 하자.이러한 상황에서, 이러한 코드를 돌린다고 가정해 보자.shapers안에는 많은 객체들과 그들의 class가 있을 것이다.하지만 너무 많은 implement와 class가 있다 보니, 객체가 Shape이라는 클래
다음과 같이 코드를 작성했다고 가정해 보자.deleter.hppdeleter.cppobject.hppmain.cpp이렇게 코드를 짜면, Object의 ~Object가 호출되지 않고, Object객체 p가 소멸된다.따라서 코드를 짜다 보면 이렇게 소멸자가 호출되지 못하는