programing150 Get Set 함수를 쓰는 의미 constness 이야기 하다가멤버 변수를 get set 놓을 바에 public으로 놓을 것이다라고 들어서과연 get set이 의미가 없나 찾아봤다. - 공식적 > 객체의 캡슐화, 은닉성을 위해서 - 프로그래머의 편의적 이유 > 디버그가 편하다가장 큰 이유값이 어디서 변경되는지 알 수 있다. > 접근자 오버로딩 > public을 했을 경우에 타자를 적게 치는 것 제외하고 별로 득이 없음 > 객체 설계시 데이터 필드가 매우 유동적으로 사용 가능 > 추가적인 기능 2017. 4. 10. 함부로 인수에 레퍼런스 타입을 넣으면 안된다. - "비const 참조에 대한 초기 값은 lvaue여야 합니다." > 주소값을 LValue 참조 하면 에러가 뜬다.> 레퍼런스는 포인터 기반으로 돼있기 때문에 lvalue 이어야 한다.(r value는 &주소 연산자를 사용할 수 없다. 함수의 임시 객체가 R value 인 것 주의)cf. 포인터 기반이기 때문에 레퍼런스와 포인터는 속도 대동 소이하며 편의성으로 사용할 뿐이다. - 대신 주소값을 다른 변수에 받아서 이 변수를 참조하면 되긴 한다. - 주소값을 인수로 넣어 쓰기 위해서 인수에 레퍼런스 타입은 피해야 한다. cf. 그런데 포인터에 레퍼런스를 쓸 일이 있나? cf. 윈도우 api의 LP어쩌구 타입은 주의... 2017. 4. 7. typedef 상수 포인터 - 상수 포인터에 대해서는 > int* const p; // p 자체 주소값만 상수 > const int* p; // p가 가리키는 값(p*)만 상수상수 > const int* const p; // p 자체 주소값과 p가 가리키는 값(p*) 모두 상수 다 알고 있는 내용일 듯... - 그러면 typedef을 이용하여 포인터 자료형을 재정의 한다면? > 상수 포인터 처럼 되지 않을까 했지만 > #define으로 한 매크로 정의가 아니기 때문에 다르다 typedef int* PINT; const PINT p; // p 자체 주소값만 상수 PINT const p; // 허용은 되나 잘 안 쓰는 구식 표현, p 자체 주소값만 상수 따라서 포인터가 가리키는 내용을 상수화 할 수 없다. - 주소값 상수화 : 주소 .. 2017. 4. 7. 가변 함수 - 형식은 마지막 인수로 ... 붙임 - va_list ap> Argument Pointer> 스택에 있는 인수를 읽을 때 포인터 연산을 해야 하는데 현재 읽고 있는 번지를 기억하기 위한 포인터 변수 - va_start(ap, 마지막 고정인수)> ap 포인터 변수가 첫 번째 가변 인수를 가리키도록 초기화> 첫 번째 가변 인수의 번지를 조사하기 위해 마지막 고정 인수를 전달> 마지막 고정인수로서 가변 인자의 갯수를 넣어서 활용하면 좋음 - va_arg(ap, 인수 타입)> 가변 인수를 읽음> 내부적으로 매크로 함수> 타입은 잘 맞춰주면서 사용해야 함 - va_end(ap)> 호환성 때문에 사용> 플랫폼에 따라 가변 인수를 읽은 후에 뒷처리 해야 함> 호환성을 위해서 관례적으로 넣어서 사용 2017. 4. 5. 이전 1 ··· 6 7 8 9 10 11 12 ··· 38 다음