가끔씩 매개변수에 const 클래스 &ref
뭐 이런거 있던데
const선언 할꺼면 뭐하러 &기호 붙이냐 궁금하다..
레퍼런스로 쓰시려고
굳이 레퍼런스 안써도 되지 않냐? 값변경도 못하는데 그냥 써도 멤버에 접근할수 있고 결국 똑같은거아님?
값 변경 못하게 하려고 const 쓰는거 아닌가요?
참조만 하는데 데이터형 통쨰로 보낼라고
콜바이 벨류로 받아도 값변경 안될텐데 어떤차이 있는지 예같은거좀..
밸류로 보내기 보다 포인터만 보내면 편하지 않아요?
밸류는 복사해서 가져가는거라서 메모리 더 먹고, 만들기도 더 귀찮고
다른분들말대로 레퍼런스가 아니고 일반변수로 전달하면 전달할때 복사생성하고 함수끝날때 소멸자가 호출되기때문
만약 복사생성자에 저렇게하면 무한루프 빠질수도 들었던거같은데 설마 저게 그거였나..
만약 복사생성자의 매개변수가 래퍼런스가 아니라 일반변수면 무한호출되지. 애초에 컴파일러가 에러처리해줌
사이즈 큰 클래스의 변수를 빠르게 전달하면서 내용을 바꾸지 않음까지 보장하려고
뽀이드 뽀대랑 비슷한거지. const까지 무슨 변수 까짓 거 누가 귀신이 와서 건드린다고
유지보수 때문 아닌가여?
뽀대같은소리함 . 함수원형에 const가 붙음으로서 원형만봐도 이함수에 포인터나 레퍼런스를 넘겨도 데이터가 변경되지않음을 보장받을수있다. 사용자를 위한 인터페이스 성격도 있고 구현자 입장에서도 실수를 방지할수있는거고
예를들어 strlen의 매개변수는 const char*이기때문에 변경이 안됨을 보장받지만 strtok는 첫번째 매개변수가 char*이므로 원본이 훼손되는 함수라는걸 알수있다. 정의를 전혀안봐도 사용자는 함수이름과 매개변수만봐도 안전하게 사용할수있다. 이게 객체지향에서 누누히 말하는 캡슐화고 정보은닉이고 추상화야
immutability
ㄴ문법충// const 붙이면 속도 빨라짐..?
const 쓴다고 속도가 왜빨라짐? 매개변수로 넘길때 레퍼런스를 넘기면 복사생성, 그리고 소멸자호출이 안이루어지므로 빠르게 작동한다고. 그래서 레퍼런스를 쓰는거고 const는 래퍼런스로 넘겨도 내부에서 원본의 훼손이 안잃어나도록 방지하는 문법적 장치라고
레퍼런스로 쓰시려고
굳이 레퍼런스 안써도 되지 않냐? 값변경도 못하는데 그냥 써도 멤버에 접근할수 있고 결국 똑같은거아님?
값 변경 못하게 하려고 const 쓰는거 아닌가요?
참조만 하는데 데이터형 통쨰로 보낼라고
콜바이 벨류로 받아도 값변경 안될텐데 어떤차이 있는지 예같은거좀..
밸류로 보내기 보다 포인터만 보내면 편하지 않아요?
밸류는 복사해서 가져가는거라서 메모리 더 먹고, 만들기도 더 귀찮고
다른분들말대로 레퍼런스가 아니고 일반변수로 전달하면 전달할때 복사생성하고 함수끝날때 소멸자가 호출되기때문
만약 복사생성자에 저렇게하면 무한루프 빠질수도 들었던거같은데 설마 저게 그거였나..
만약 복사생성자의 매개변수가 래퍼런스가 아니라 일반변수면 무한호출되지. 애초에 컴파일러가 에러처리해줌
사이즈 큰 클래스의 변수를 빠르게 전달하면서 내용을 바꾸지 않음까지 보장하려고
뽀이드 뽀대랑 비슷한거지. const까지 무슨 변수 까짓 거 누가 귀신이 와서 건드린다고
유지보수 때문 아닌가여?
뽀대같은소리함 . 함수원형에 const가 붙음으로서 원형만봐도 이함수에 포인터나 레퍼런스를 넘겨도 데이터가 변경되지않음을 보장받을수있다. 사용자를 위한 인터페이스 성격도 있고 구현자 입장에서도 실수를 방지할수있는거고
예를들어 strlen의 매개변수는 const char*이기때문에 변경이 안됨을 보장받지만 strtok는 첫번째 매개변수가 char*이므로 원본이 훼손되는 함수라는걸 알수있다. 정의를 전혀안봐도 사용자는 함수이름과 매개변수만봐도 안전하게 사용할수있다. 이게 객체지향에서 누누히 말하는 캡슐화고 정보은닉이고 추상화야
immutability
ㄴ문법충// const 붙이면 속도 빨라짐..?
const 쓴다고 속도가 왜빨라짐? 매개변수로 넘길때 레퍼런스를 넘기면 복사생성, 그리고 소멸자호출이 안이루어지므로 빠르게 작동한다고. 그래서 레퍼런스를 쓰는거고 const는 래퍼런스로 넘겨도 내부에서 원본의 훼손이 안잃어나도록 방지하는 문법적 장치라고