본문 바로가기

programing/C++56

쉼표 연산자 - , 연산자는 양쪽에 있는 식을 왼쪽에서 오른쪽 순서로 실행하고 오른쪽에 있는 식의 값을 가진다. - , 연산자의 가장 일반적인 사용 예는 for 루프의 증분 식이다. 쉼표는 함수 인수 목록과 같은 일부 컨텍스트에서 구분 기호로 사용될 수 있다. 쉼표를 구분 기호로 사용하는 경우와 연산자로 사용하는 경우는 완전히 다르기 때문에 둘을 혼동하지 않도록 주의해야 한다. - , 연산자의 우선 순위는 가장 마지막이다. // cpp_comma_operator.cpp #include int main () { int i = 10, b = 20, c= 30; i = b, c; printf("%i\n", i); // 20 출력 i = (b, c); printf("%i\n", i); // 30 출력 } https://ms.. 2017. 5. 24.
R6025 - pure virtual function call 순수 가상 함수 호출하면 에러 뜸 그렇다고 순수 가상 함수 객체는 독립적으로 만들 수 없고 외부에서 순수 가상 함수 포인터로 함수를 호출해도 실체가 없어서 포인터에러가 뜬다. 그래서 이 오류가 뜨는 경우는 주로 순수 가상 함수가 들어있는 추상 클래스에서 부모 클래스나 자식 클래스에서 해당 함수를 호출 할 때 생길 수 있다. 오류 잡기 void handle_pure_virtual_function_call(){RaiseException(EXCEPTION_ACCESS_VIOLATION, 0, 0, NULL);} 그리고 프로그램 시작 부분에 _set_purecall_handler(handle_pure_virtual_function_call)호출 2017. 4. 25.
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.