전체 글 썸네일형 리스트형 [C++] Constructor & Destructor 생성자(Constructor)와 소멸자(Destructor) 생성자는 다음과 같은 특징을 가지고 있다. 클래스의 이름과 함수의 이름이 동일하다. 반환형이 선언되어 있지 않으며, 실제로 반환하지 않는다. 객체 생성시 딱 한번 호출된다. 함수의 일종으로, 오버로딩이 가능하다. 함수의 일종으로, 매개변수에 디폴트 값 설정이 가능하다. 이러한 생성자를 이용하면, 객체 생성과 동시에 초기화가 가능하다. #includes using namespace std; class SimpleClass { private: int num1; int num2; public: SimpleClass() { num1 = 0; num2 = 0; } SimpleClass(int n) { num1 = n; num2 = 0; } SimpleC.. 더보기 [C++] Information Hiding 정보 은닉 프로그래머는, 제한된 방법으로의 접근만을 허용하여 잘못된 값이 젖아되지 않도록 도와야 하고, 실수를 했을 때 실수가 쉽게 발견되어야 한다. 보통 멤버변수를 Private로 선언하고, 해당 변수에 접근하는 함수를 별도로 정의하여 안전한 형태로 멤버변수의 접근을 유도한다. 이러한 접근 함수는 GetXXX/SetXXX로 정의되어 있는데, 이러한 함수를 엑세스 함수(access function)라한다. 이들은 멤버변수를 private로 선언, 클래스 외부에서의 멤버변수 접근을 목적으로 정의되는 함수이다. 맴버함수에 const를 선언할 경우, 해당 함수 내에서는 멤버변수에 저장된 값을 변경하지 않겠다는 말이다. int GetX() const; int GetY() const; void ShowRecInf.. 더보기 [C++] OOP; Object-Oriented Programming OOP; Object-Oriented Programming 설계 원칙 (SOLID) SRP; Single Responsibility Principle; 단일 책임의 원칙 모듈이 변경되는 이유는 한가지여야 하며, 오직 하나의 액터에 대해서만 책임을 져야한다. OCP; Open-Closed Principle; 개방 폐쇄 원칙 확장에 대해 열려있고 수정에 대해서는 닫혀있어야 한다. 새로운 동작 추가가 용이하고, 동작 추가 시 기존 코드에 수저을 가할 필요가 없다. LSP; Liskov Substitution Principle; 리스코프 치환 원칙 하위 입은 상위 타입을 대체할 수 있어야 한다. ISP; Interface Segregation Principle; 인터페이스 분리 원칙 클라이언트의 목적과 용도에 .. 더보기 [C++] Structure C++의 구조체 구조체는 연관 있는 데이터를 묶을 수 있는 문법적 장치로, 하나의 구조체에는 서로 다른 종류의 데이터가 들어갈 수 있다. struct Student { string Name; int sNumber; int level; } C에서의 구조체와 C++의 구조체의 차이점은 다음과 같다. 먼저 C에서는 구조체 변수 선언을 위해서는 struct 키워드를 선언하거나, 구조체 자체에 typedef를 선언하여 별칭을 정의한 뒤 선언해야한다. // C struct Student { string Name; int sNumber; int level; }; int main(void) { struct Student zelda; } -------------------------- typedef struct Stud.. 더보기 [C++] Class & Object Class & Object 클래스와 구조체의 차이점은 struct 키워드 대신 class 키워드를 사용한다는 것이다. 이러한 클래스는 앞선 구조체와 같은 방법으로는 호출할 수 없다. 클래스는 정의 과정에서 각각의 변수 및 함수의 접근 허용범위를 별도로 선언해야 한다. C++의 접근제어 지시자는 세가지가 존재한다. public: 어디서든 접근허용 protected: 상속관계에 놓여있을 때, 유도 클래스에서의 접근허용 private: 클래스 내에서만 접근허용 #include #include using namespace std; namespace STUDENT_CONST { enum { NAME_LEN = 9 }; } class Student { private: char studentName[STUDENT_C.. 더보기 [C++] Call by value / Call by reference Call-by-value: 값을 인자로 전달하는 함수의 호출방식 void SwapByValue(int num1, int num2) { int temp = num1; num1 = num2; num2 = temp; // Call-by-value } Call by reference: 주소 값을 인자로 전달하는 함수의 호출 방식 void SwapByRef(int *ptr1, int *ptr2) { int temp = *ptr1; *ptr1 = *ptr2; *ptr2 = temp; // Call-by-reference } 더보기 Memory Structure 메모리 구조Code 영역: 프로그램의 코드가 저장되는 영역Data 영역: 전역변수 & 정적변수가 저장되는 영역Stack 영역: 함수 호출과 관계되는 지역변수 및 매개변수가 저장되는 영역,수의 호출과 함꼐 할당되며 호출이 종료되면 소멸Stack의 Push/Pop동작으로 데이터를 저장하고 인출Stack의 LIFO 방식에 따라 동작메모리의 높은 주소에서 낮은 주소 방향으로 할당Heap 영역: 사용자가 직접 관리가 가능한 메모리 영역메모리 공간이 동적으로 할당되고 해제됨메모리의 낮은 주소에서 높은 주소의 방향으로 할당 더보기 [C++] Const const const int num = 10; 변수 num을 상수화 하여, 변경할 수 없게 만듦 const int* ptr1 = &val2; 포인터 ptr을 이용하여 val1의 값은 변경 불가, 하지만 포인터를 이용하지 않고 val = num와 같이 포인터의 위치는 변경이 가능 int* const ptr2 = &val2; 포인터 ptr2가 상수화 됨, 포인터의 주소 변경이 불가능함 const int * const ptr3 = &val3 포인터 ptr3가 상수화 되었으며, ptr3를 이용해서 val3의 값을 변경할 수 없음 Const 참조자의 또 다른 특징 상수화된 변수의 경우 참조자 선언은 다음과 같이 할 필요가 있다. const int num = 20; const int &ref = num; 이렇게 선.. 더보기 이전 1 ··· 7 8 9 10 11 12 다음