using A = void(&)();
using B = void(*)();
의 차이점은
첫번째꺼는 함수 포인터 변수가 새로 안만들어지고 참조로 연결되는거고
두번째꺼는 포인터 변수가 만들어지고 주소가 대입되는걸로 이해하면 되는건가요?
using A = void(&)();
using B = void(*)();
의 차이점은
첫번째꺼는 함수 포인터 변수가 새로 안만들어지고 참조로 연결되는거고
두번째꺼는 포인터 변수가 만들어지고 주소가 대입되는걸로 이해하면 되는건가요?
std::function - return 0;
응 전자는 참조고 컴파일 타임에 결정되어야함.
전자는 메모리를 차지하지 않고 후자는 차지하지. ( 뭐 전자도 optimize 되면 1바이트 차지하겠지만 )
ㅇㅎ 감사합니다. 컴파일단은 다음달에 내려가볼 예정이니 그 때 어떻게 optimize되는지 알아봐야겠어요. std::function은 봤는데 ㅋㅋ 일단은 안써도 될듯요.
함수포인터 다메.... - return 0;
전자는 메모리를 차지않는 이유가 뭔가요.. 변수선언은 됐는뎅...
std::function에서는 변수로 구현해놨겠죠?
참조값으로 불러오면 새로 변수가 생성되서 가르키는게 아니라 완전히 같은 메모리를 공유한다고 생각하시면 될듯 모양만 다를분
그러면 좀 위험하지않나요. 객체가 변경되면 참조하던놈은 그냥 쓰레기값이 되어버릴건데..
함수 레퍼런스 정보는 컴파일시점에서 전부 끝나는거니까 변경에 대해 고민하지 않아두됨
오히려 변경때문에 문제생기는건 포인터에서 고민할 문제
포인터는 또 뭐가...