본문 바로가기
반응형

C++13

[C++] 객체지향(상속) 타입 캐스팅(Type casting) + 퀴즈문제 암시적 유형 변환(Upcasting) 파생(자식) 클래스 객체의 경우 기본(부모) 클래스 객체를 가리킬 수 있습니다. 파생(자식) 클래스 객체는 암시적(implicitly) 으로 기본(부모) 클래스 객체로 변환될 수 있습니다. 이것을 Upcasting이라고 합니다. 아래는 Upcasting 예시코드입니다. 일단은 결과값에 상관하지말고 봐주시면 감사하겠습니다. #include #include #include class Car{ public: Car(std::string name) : name_(name){} const std::string& name() const {return name_;} private: std::string name_; }; class Bus : public Car{ public: B.. 2023. 10. 31.
[C++] static에 대하여 Static 변수 static 변수는 프로그램 수명 동안 할당됩니다. call by value에서 보면 값을 호출하고 나서 값이 초기화되는데 static을 사용할 경우 값이 유지가 됩니다. 아래에 static을 사용했을 때와 안했을 때를 비교헤보겠습니다. static 변수를 선언했을 때 #include #include #include void foo(){ static int count = 0; std::cout 2023. 10. 30.
[C++] 함수 오버로딩(Function overloading) 함수 오버로딩(Function overloading) 같은 이름의 함수를 여러 개 사용할 수 있습니다. 예를 들어 아래의 코드와 같이 나타낼 수 있습니다. int foo(int x); //OK int foo(int x, int y); //OK int foo(char x); //OK void foo(double x); //OK void foo(int x); //ERROR! 위의 코드와 같이 같은 함수명으로 여러 가지를 선언할 수 있습니다. 하지만 마지막 foo의 경우 에러가 발생합니다. 그 이유는 맨 위에 이미 매개변수가 int인 foo를 받았기 때문입니다. 만약 foo(5)를 입력했을 때 컴파일러 입장에서 첫 번째를 말하는 건지 마지막을 말하는 건지 구분을 못합니다. 컴파일 과정에서 타겟 함수를 정한다... 2023. 10. 29.
[C++] 얕은 복사(Shallow copy) VS 깊은 복사(Deep copy) 얕은 복사 (Shallow copy) 얕은 복사의 경우 데이터의 주소를 복사하는 것입니다. 다음 아래 그림을 보면 이해하기 쉽습니다. x = y를 통해 y의 주소값을 x에 넣습니다. 그렇기 때문에 *y의 값이 변하면 마찬가지로 *x의 값이 *y와 같게 변합니다. 깊은 복사 (Deep copy) 깊은 복사의 경우 데이터 값을 완전히 복사하는 것을 말합니다. 그렇기 때문에 복사된 값과 이전의 값은 완전히 독립적으로 됩니다. 얕은 복사 예시코드 다음은 얕은 복사에 관한 예시코드입니다. #include #include #include class Car{ //class declaration public: //members accessible from outside Car(char* name){ //default .. 2023. 10. 29.
728x90
반응형