C++

[Basic C++] #11_생성자의 상속 C++ 개발에서 베이스 클래스의 생성자를 상속하는 경우들을 살펴보겠습니다. "전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다. 슈퍼클래스의 생성자 상속, "using" 키워드 class Super { public: Super(const std::string& str); }; class Sub : public Super { public: using Super::Super;// using 키워드 사용을 통해 슈퍼 클래스의 생성자 사용을 명시적으로 선언 Sub(int i); }; // Sub 클래스 객체 생성 방법은 2가지가 됩니다. Sub sub1(1);//Sub 클래스 자체적으로 갖는 생성자 Sub sub1("Hello");//S..
[Basic C++] #10_오버라이드 키워드, override C++ 개발에서 베이스 클래스의 가상 함수를 오버라이딩 하는 구체적인 예제들을 살펴보겠습니다. "전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다. 오버라이드 키워드(override) class Super { public: Super(); virtual ~Super(); virtual void someMethod(double d); }; class Sub : public Super { public: Sub(); virtual void someMethod(int i) override;// 에러 발생! }; 먼저, "override" 키워드 사용의 필요성에 대해 복기해봅시다. 서브 클래스는 베이스 클래스에서 선언..
[Basic C++] #9_객체의 업캐스팅과 다운캐스팅, 슬라이싱 C++ 개발에서 객체의 업캐스팅과 다운캐스팅 방법과 특징들에대해 알아보겠습니다. "전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다. 객체의 업캐스팅(up-casting), 슬라이싱 Sub mySub; Super mySuper = mySub;// 업캐스팅, 슬라이싱 발생! Super& mySuper = mySub;// 업캐스팅, 슬라이싱 미 발생! 업캐스팅이란, 상위 혹은 부모 클래스로 타입 캐스팅 하는 것을 의미합니다. 이때, 객체는 부모 클래스로 업캐스팅 되거나 부모 클래스의 객체에 대입할 수 있습니다. 이 과정에서, 캐스팅 혹은 대입이 일어나면서 자식 클래스만 갖는 특징들이 사라집니다. 이러한 현상을 ..
[Basic C++] #8_파생 클래스와 베이스 클래스의 연동, 생성 순서, 생성자 체이닝, 캐스팅 C++ 개발에서 상속을 통해 기본 클래스와 파생 클래스의 연동, 생성 순서 등에 대해 알아보겠습니다. "전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다. C++의 객체 생성 순서 C++의 객체 생성 순서는 재귀적으로 적용됩니다. 1. 베이스 클래스의 디폴트 생성자 호출 2. 클래스 데이터 멤버들의 선언 순서에 맞춰 생성 3. 생성자 바디 실행 class someClass { public: someClass() { cout
[Basic C++] #7_클래스 상속 활용 방법 C++ 개발에서 상속을 통해 클래스를 생성하는 방법에 대해서 알아보겠습니다. "전문가를 위한 C"의 9 항목, "클래스 상속 활용 테크닉"에 해당하는 내용입니다. 상속 // Parent Class 정의 class Super { public: Super(); ~Super(); void SomeMethod_1(); protected: int mProtectedInt; private: int mPrivateInt; }; // Child Class 정의 class Sub : public Super { public: Sub(); void SomeMethod_2(); }; 서브 클래스, 혹은 자식 클래스는 부모 클래스와 "is-a" 관계를 형성합니다. "is-a" ..
[Basic C++] #6_오버라이딩과 오버로딩의 차이점 C++ 개발 관련 내용 중, 오버로딩과 오버라이딩에 대해 알아보겠습니다. "전문가를 위한 C"의 8 항목, "클래스와 객체 마스터하기"의 내용입니다. #0. 오버로딩 vs 오버라이딩 1. 개념 C++의 오버로딩(Overloading)은 동일한 유효범위 내 혹은 동일한 상속 계층 내 여러 멤버 함수들이 서로 다른 시그니처를 갖고 함수 이름의 중복만 허용하는 기능입니다. C++의 오버라이딩(Overriding)은 부모 클래스에서 정의한 가상 함수를 자식 클래스에서 재정의 할 수 있도록 허용하는 기능입니다. 따라서, 오버라이딩과 오버라이딩의 차이점은 동일한 스코프 내 서로 다른 함수들이 함수 시그니처 중 동일한 이름만갖고 그 외 반환 타입, 파리미터 유..
[Basic C++] #5_메서드 종류, static 메서드, const 메서드 C++ 클래스 내부에서 사용되는 메서드의 종류에 대해서 알아보겠습니다. "전문가를 위한 C"의 8 항목, "클래스와 객체 마스터하기"의 내용입니다. #0. static 메서드 class A { public: ... private: static std::string DoubleToString(double val); static double StringToDouble(const std::string& str); }; 데이터 멤버와 마찬가지로 메서드 또한 특정 클래스의 모든 객체에 공통적으로 적용되어야 할 경우 "static" 키워드와 함께 선언합니다. "static" 메서드의 경우, 구현 부분에서 "static" 키워드를 적을 ..
[Basic C++] #4 데이터 멤버의 종류, static, const, 참조 멤버 C++ 클래스 내부 데이터 멤버들의 종류에 대해서 알아보겠습니다. "전문가를 위한 C"의 8 항목, "클래스와 객체 마스터하기"의 내용입니다. #0. static 데이터 멤버 class A { private: static int totalCount; }; Details 어떤 데이터 멤버가 특정 클래스에 종속되기는 하나, 객체 별로 각각의 복제본을 갖는 것이 불합리하다고 판단되면, "static" 키워드를 통해 해당 클래스의 객체들이 전역으로 접근 가능한 데이터 멤버를 생성합니다. #1. const 데이터 멤버 class A { public: const int maxHeight = 100;// 상수 멤버 선언 const ..
[Basic C++] #3_얕은 복제, 깊은 복제 C++ 개발 중 객체 생성, 복제, 그리고 대입 과정에서 발생하는, 얕은 복제와 깊은 복제에 대해 알아보겠습니다. #0. 얕은 복제 1. 복제 생성자, 얕은 복제 얕은 복제는 클래스가 기본적으로 제공하는 디폴트 복사 생성자 혹은 디폴트 대입 연산자를 활용해 원본 값과 복사된 값이 같은 참조를 가리키도록 합니다. 2. 코드 예제(복사 생성자) #include "Spreadsheet.h" void printSpreadsheet(Spreadsheet s); int main() { Spreadsheet s1(4, 3); // 가로 4, 세로 3의 스프레드 시트 생성 printSpreadsheet(s1); } Details "s1" 객체가 printSpreadsh..
[Basic C++] #2 C 스타일의 문자열, char*, const char* C++ STL에서 제공하는 std::string 클래스 이전에, C에서 제공하는 문자열의 주요 특징들에 대하여 알아보겠습니다. C 스타일 문자열의 장점과 단점 1. 장점 단순하다. 기본 문자 타입과 배열 구조만 사용한다. 가볍다. 저수준이다. 익숙하다. 2. 단점 범용 문자열 데이터 타입으로, 고급 작업 시 많은 시간이 소요된다. 메모리 작업에 민감하고, 디버깅 과정에서 버그를 찾기 어렵다. C++의 객체지향 개념을 사용 할 수 없다. 문자열 내부 동작 방식을 모두 이해해야 한다. 헤더 파일 #include 코드 예제, strlen, strcpy char* copyString(const char* str) { char* r..
Hardii2
'C++' 태그의 글 목록 (34 Page)