Loading...

String class

#include #include #include using namespace std; class MyString { char* string_content; // 문자열 데이터를 가리키는 포인터 int string_length; // 문자열 길이 int memory_capacity; // 현재 할당된 용량 public: MyString(char c); // 문자 하나로 생성 MyString(const char* str); // 문자열로 부터 생성 MyString(const MyString& str); // 복사 생성자 ~MyString(); // 소멸자 // 함수가 클래스의 멤버함수인 경우 const 키워드를 뒤에 삽입가능 // 이 경우 함수에 속해있는 객체의 멤버변수를 변경할 수 없다 int length..

explicit, mutable

암시적 형 변환 (implict type conversion) - 컴파일러가 자동으로 하나의 기본 자료형을 다른 자료형으로 변환해준다. - 한 기본 자료형이 예상되지만 다른 기본 자료형이 제공될 때마다 수행한다. - 변환을 수행하는 방법을 컴파일러에게 명시적으로 알려 주지 않는다. - 한 자료형의 값을 더 큰 자료형으로 승격할때 사용해도 좋다. - 사용자가 의도하지 않은 암시적 변환이 일어날 수 있다. - 자동 형 변환이라고 불린다. 명시적 형 변환(explicit type conversion) - 형 변환을 하기 위해 형 변환 연산자를 사용한다. - 컴파일러에서 생성자를 explicit로 선언한다면 다른 생성자를 이용한 암시적 변환을 수행하지 않도록 막을 수 있다. - 해당 생성자가 복사 생성자의 형태..

초기화 리스트 (Initializer list)

생성자 호출과 동시에 멤버 변수들을 초기화 해주는 것 (생성자 이름) : var1(arg1), var2(arg2) {} -> var = 클래스의 멤버 변수, arg = 멤버 변수들을 무엇으로 초기화할지 지칭 var, arg의 이름이 같아도 상관X ex) Marine::Marine(int coord_x, int coord_y) : coord_x(coord_x), coord_y(coord_y), hp(50), damage(5), is_dead(false) {} 초기화 리스트를 사용하면 생성과 초기화를 동시에 수행하는 반면 초기화 리스트를 사용하지 않는 경우 생성을 먼저 한 뒤 대입을 수행하게 된다. int a = 10; // 초기화 리스트를 사용한다면 int a; a = 10; // 초기화 리스트를 사용하지..

2020. 8. 17. 16:33

참조자 (레퍼런스 - reference)

다른 변수나 상수를 가리키는 방법 (별명을 붙여주는 것) 참조자를 사용하면 불필요한 &와 *를 사용하지 않아도 되기때문에 코드를 훨씬 간결하게 나타낼 수 있다. 자료형& 참조자명 = 변수명; ex) int& another_a = a; double& another_b = b; int*& another_c = &c; int main() { int a = 3; int& another_a = a; another_a = 5; std::cout

이름 공간 - namespace

이름공간이란 어떤 정의된 객체에 대해 어디 소속인지 지정해주는 것이다 같은 이름이라도 소속된 이름공간이 다르면 다른것으로 취급한다 std::cout - std라는 이름 공간에 정의되어 있는 cout을 의미한다 - std라는 이름공간 없이 cout만을 사용하면 컴파일러는 cout을 찾지 못한다 이름공간 정의 방법 ex) namespace header1 { int foo(); void bar(); } namespace header2 { int foo(); void bar(); } - 두 헤더파일 header1.h와 header2.h가 존재하는 경우 header1에 있는 foo()는 header1의 이름공간에 존재하는 것이고 header2에 있는 foo()는 header2의 이름공간에 존재한다 - 자기자신이 ..

const가 붙은 멤버함수

클래스의 멤버함수에는 함수 선언시 const 키워드를 뒤에 붙일 수 있다. ex) void show() const; 이 경우 함수에 속해있는 객체의 멤버 변수를 변경할 수 없다. 즉, 이 함수는 멤버 변수의 값을 수정하지 않는다는 뜻이다. ex) #include using namespace std; class Num { int count; public: Num() { count = 0; } void show() const { count = 1; // 에러 발생! cout

2019. 12. 4. 16:40

REST API

REST (Representational State Transfer) - 자원을 이름으로 구분하여 해당 자원의 상태를 주고 받는 모든것을 의미 - 자원의 표현에 의한 상태 전달 - HTTP URI를 통해 자원을 명시하고 HTTP METHOD를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미 - CRUD Operation - Create : 생성(POST) - Read : 조회(GET) - Update : 수정(PUT) - Delete : 삭제(DELETE) - HEAD: header 정보 조회(HEAD) 다음의 구성으로 이루어져있다. - 자원 (Resource) - URI, 해당 소프트웨어가 관리하는 모든 것, 모든 자원에 고유한 ID가 존재하고 이 자원은 Server에 존재한다...