C++/기억하고 싶은 거

참조자를 사용해 복사 피하기 함수의 인자 전달에서 크기가 큰 클래스타입이나 컨테이너 객체를 복사하는 것은 비효율적일 수 있다. 게다가 일부 클래스 타입은 복사할 수 없다. 복사할 수 없는 타입인 객체와 연산하려면 함수에서는 참조자 매개변수를 사용해야 한다. bool isShorter(const string &s1, const string &s2) { return s1.size() < s2.size(); } 두 string의 길이를 비교하는 함수를 만들 때, string의 길이는 길 수 있기에 복사를 피하고 싶다면 매개변수를 참조자로 만든다. 가능하면 const에 대한 참조자를 사용한다. 함수에서 변경하지 않는 매개변수를 const가 아닌 보통의 참조자로 정의하면 좋지 못하다. 함수를 호출하는 쪽에서는 그..
const_cast는 피연산자의 하위 const만을 변경하여 const를 날려 버릴 수 있다. int main() { char str[] = "abcd"; const char* csptr = str; char* sptr = const_cast(csptr); sptr[1] = 'B'; cout
const에 대한 참조자 const에 대한 참조자는 const인 객체나 contst가 아닌 객체, 상수와 결합할 수 있다. 그러나 일반적인 참조자는 const가 아닌 객체와 결합할 수 있으나 const인 객체와는 결합할 수 없다. int i = 42; const int &r1 = i; // const int&를 보통의 int 객체에 결합할 수 있다. const int &r2 = 42; // 좋음: r2는 const에 대한 참조자이다. const int &r3 = r1 * 2; // 좋음: r3는 const에 대한 참조자이다. int &r4 = r1; // 오류: r4는 const가 아닌 보통의 참조자이다. const에 대한 포인터 const에 대한 포인터 역시 참조자와 마찬가지로 const에 대한 포인터..
https://modoocode.com/136 씹어먹는 C++ - modoocode.com 이름 공간 - namespace 이름 공간은 말그대로 어떤 정의된 객체에 대해 어디 소속인지 지정해주는 것과 동일하다. 중복된 이름을 구분하기 위해 C++에서는 같은 이름이라도, 소속된 이름 공간이 다르다면 다른 것으로 취급한다. (동명이인) std::cout 위의 코드에서 std가 이름 공간이 된다. std::가 없이 그냥 cout이라고 한다면 컴파일러는 cout을 찾지 못한다. 이름 공간을 정의하는 방법은 다음과 같다. // header1.h namespace header1 { int aaa(); void bbb(); } // header2.h namespace header2 { int aaa(); void b..
KANTAM
'C++/기억하고 싶은 거' 카테고리의 글 목록