🥨 iostream
🥨 cctype
isalnum(), isalpha(), tolower(), toupper()
와 같이 문자열을 위한 함수가 포함되어 있는 라이브러리🥨 static_cast
static_cast<type>
을 활용하는 것이 좋다 double* double_p = new double(42.4242);
int* int_p1 = double_p; // 묵시적 형변환
int* int_p2 = (int*)double_p; // 명시적 형변환
int* static_p = static_cast<int*>(double_p); // 오류 발생
❗️ 하지만 상속관계에 따른 형변환은 타입체크가 제대로 되지 않으므로 그때는 dynamic_cast를 사용해야 한다
👀 ex01은 PhoneBook class와 Contact class를 만들고 PhoneBook 객체 안에 Contact 객체들을 저장하여 하나의 전화번호부를 만드는 과제였다
UpperCamelCase
형태로 클래스명을 작성해야 한다🥨 iomanip
setw(num), setfill('char')
와 같이입출력을 조절할 수 있는 함수들을 제공한다🥨 임시 객체
임시 객체
라는 개념을 찾게 되었다복사 생성자
를 만들어 두지 않으면 얕은 복사 생성자를 컴파일러에서 만들어 진행하므로 메모리 문제가 발생할 수 있다고 한다. 이부분은 더 알아봐야 할듯..🥨 cin, getline 예외 처리
getline
함수나 cin
함수를 사용해야 한다failbit, badbit
등의 flag가 켜진다. 이를 통해 예외 처리를 해줄 수 있다.if(!std::getline(std::cin >> std::ws, cmd) || std::cin.eof()) {
if (std::cin.eof()) {
std::cout << "\nEOF: Goodbye~!\n";
break;
}
std::cout << "\nAn error occurred in the input. Please try again.\n";
std::cin.clear();
std::cin.ignore(4096, '\n');
continue;
}
eof
가 들어와 입력 종료가 되었을 경우에 따른 예외처리다.cin.clear()
로 오류 flag들을 다시 초기화하고, cin.ignore()
를 통해 입력 버퍼를 비워주는 식으로 진행했다🚨 다만 여기서 한 가지 내가 해결하지 못한 것이 있는데!
while (true) {
displayPhoneBook();
std::cout << "Enter the index number(0 ~ " << len - 1 << "): ";
std::cin >> search;
if (std::cin.eof())
return ;
if (std::cin.fail() || search < 0 || search >= len) {
std::cout << "\nAn error occurred in the input. Please try again.\n";
std::cin.clear();
std::cin.ignore(4096, '\n');
continue;
}
break;
}
if (std::cin.eof()) {
std::cin.clear();
std::cin.ignore(4096, EOF);
break;
}
👀 ex02는 주어진 hpp파일과 test파일을 통해 정의 된 함수들을 구현하는 과제였다. 확신의 노가다 과제..
🥨 mem_fun_ref
- 멤버 함수 어댑터
🥨 static 변수의 초기화
객체 생성 전
에 반드시 미리 초기화를 해주어야 한다전역 범위에서 초기화
해야 한다🥨 소멸자
소멸자
개념이 나온 과제!리눅스와 우분투의 차이
라고 한다. 우분투의 경우 생성한 순서대로 소멸되지만, 우분투의 경우 생성 역순으로, 그러니까 마지막으로 생성된 것 부터 소멸된다. 큐나 스택이냐의 차이인 것 같은데,, 옛날 과제에는 우분투 환경에서 돌리라는 제약 조건이 있었다고 하는데 현재는 사라진 조건이라 이 소멸 순서에 따른 차이는 평가에 영향을 미치지 않는 것이 맞다고 본다. 다만 그 차이가 왜 발생하는 지는 알아두는 것이 좋지 않을까?이 외에는 사실 딱히 쓸 말이 없는 단순 노가다 과제!! 잘 더해주고, 빼주고, 입금 금액보다 많은 금액은 출금 못하게 하고.. 당연함. 그것이 은행 계좌임.