C++의 내용을 정리!
코딩표준
- 매개변수의 이름을 더 잘 짓자
- 읽기 전용 매개변수를 상수화 하자
bool TryDivide(Vector& result, const Vector& a, const Vector& b);
const Vector a;
const Vector b;
Vector result;
TryDivide(a, b, result);
TryDivide(result, a, b);
- 호출자가
TryDivide(a, b, c);
이런 일을 할 수도 있음
- 읽기 전용 매개변수는 상수 참조로, 출력 결과용 매개변수는 포인터로
TryDivide(&a, b, c);
- 변수 a가 NULL이 될 수 있으나, 이건 말이 안되는 경우
- 함수 내에 assert함수를 넣어 a가 NULL이 되는 경우를 잡자
string
- std::string 클래스를 이용한 문자열을 길이가 증가할 수 있음
string firstName = "Jiwon";
string lastName = "Yang"
string fullName = "Jiwon Yang";
fullName = firstName;
fullName += " Yang";
fullName = firstName + " " + lastName
- const char* c_str() : 해당 string이 가지고 있는 문자 배열의 시작 주소를 가리키는 포인터를 반환
- string은 힙 메모리에 할당하는데 힙 메모리 할당은 느림
- 메모리 단편화 문제가 있음
- 내부 버퍼의 증가는 멀티 쓰레드 환경에서 안전하지 않을 수도
- 그래서 여전히 sprintf와 함께 char[]를 매우 많이 사용
파일 I/O
파일 입출력 <fstream>
- ifstream : 파일 입력
- ofstream : 파일 출력
- fstream : 파일 입력 및 출력
open()
fin.open("HelloWorld.txt", ios_base:in | ios_base::binary);
close()
fin.close();
is_open()
if (fs.is_open())