qt 프레임 워크에서 대부분의 라이브러리 신호와 슬롯은 매개 변수로 포인터를 사용합니다. 내가 포인터 대신 매개 변수로 참조를 취하는 신호 슬롯 "구조체"를 만들면 전체 매개 변수가 일반 C++ 참조처럼 4 바이트 (32 비트 시스템)로 복사됩니까?Qt 신호 및 슬롯 : 참조 인수가 복사됩니까?
참조 매개 변수로 신호/슬롯 메소드를 만들 때 뭔가를 알아 차렸기 때문에이 질문을드립니다. 그 때 내가 connect
일 때 QTCreator의 자동 완성 메커니즘은 포인터 매개 변수와 같은 참조 매개 변수로 나를 암시하지 않습니다. 그는 정기적 인 매개 변수를 통해 나를 암시합니다. 예를 들어
...
signals:
void mySignal(int& parameter);
private slots:
void on_mySignal(int& parameter);
그때 파라미터 참조 &
추가 그다지 그들과 Qt는 접속 시도 : I 수동으로 변경해야
...
connect(this, SIGNAL(mySignal(int)), this, SLOT(on_mySignal(int)));
I는 신호 및 슬롯을 만들 :
connect(this, SIGNAL(mySignal(int&)), this, SLOT(on_mySignal(int&)));
따라서 궁금한 점은 signal/s 제비? 나는 모든 도움에 감사 할 것입니다.
전제에 결함이 있습니다. 정규 C++ 참조는 객체가 아니기 때문에 크기가 없습니다. 예를 들어'sizeof'를 사용하여 참조 크기를 가져올 수 없습니다. 또한 사용되지 않는 신호/슬롯 구문 사용을 중지해야합니다. 적절한 문법은'connect (this, & Class :: mySignal, this, & Class :: on_mySignal);'이다. 그래서 걱정할 필요가 없다. – nwp
감사합니다. 그러나 주된 질문에 답하기 위해 : 참조와 함께 신호/슬롯을 사용한다면, 복사되는 데이터의 양이 많을까요? – Bremen
'int '를 지정 했더라도'int'의 복사본을 기대합니다. 슬롯의 인수에 할당하고 통과 한 매개 변수가 변경되었는지 확인하여 테스트 할 수 있습니다. – nwp