일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 스레드
- Router
- 이벤트 루프
- Django
- Knowledge Graph
- Stream
- Groovy
- express
- scrum
- 자바
- C++
- 특징
- java
- 지식 그래프
- 소켓
- 노드
- 파헤쳐보자
- benchmark
- 예제
- 개발자
- RDF
- nodejs
- Python
- socket.io
- 노드js
- node
- 스크럼 마스터
- node.js
- ngrinder
- 스크럼
- Today
- Total
목록C++언어 (3)
라봉이의 개발 블로그
1. void 포인터 c, c++ 언어에서 generic 포인터라고도 알려진 void 포인터는 굉장히 특별한 타입이다. 그 어떤 타입이든 객체든 가리킬 수 있는 포인터이기 때문이다. 심지어 함수도 가리킬 수 있기 때문에 void 포인터를 이용해 함수를 실행할 수도 있다. 선언은 다음과 같이 할 수 있다.void *ptr; 그리고 어떤 데이터든 주소값만 대입하면 된다. ex) int a = 10; float b = 10.1f; void *aPtr = &a; void *bPtr = &b; void 포인터를 사용하기 위해선 대입한 데이터형으로 형변환 시킨 후에 사용해야 한다. 왜냐하면 void 포인터가 뭘 가리키는 지 모르기 때문이다. ex)std::cout
QGraphicsItem 클래스의 boundingRect 함수는 QGraphicsScene에 addItem된 QGraphicsItem들의 직사각형 모양의 외부 경계를 정하는 함수이다. QGraphicsView 안에 존재하는 QGraphicsScene 안의 이벤트를 감지한다. 이때 QGraphicsView는 item들을 다시 paint하는 지 결정해야하는데 이때 boundingRect에서 정한 아까의 직사각형이 scene 범위 외에 존재한다면 그 item을 paint하지 않는다. 그래서 boundingRect를 잘못 지정한다면 화면에 item이 없어졌다가 다시 생기는 현상을 목격할 수도 있다. 참고로 사진에 보이는 선들은 QGraphicsItem을 상속 받았다. 문서: qt docs 참고사진:
간단히 말하면 explicit 용어는 묵시적 형변환을 할 수 없게 만들고 명시적인 형변환만 가능하도록 만드는 것이다. 그렇다면 이렇게 굳이 귀찮게 하는 이유는 무엇일까? 묵시적으로 형변환을 가능하게 만들면 프로그래머가 개발할 때 의도 또는 생각지도 않는 오류가 발생할 수 있기 때문이다. 예를 들어, class Point{ private: int y; public: Point(int yy = 0) { y = yy; } void Print() const{ cout