원래 const 안붙이면 매개변수 형식 다르다고 밑줄 찍찍 싸냐 아니면 MSVC만 그런거냐
원래 아무 이상없던 코드에서 오버로딩에 매개변수 붙어 있던 const 만 떼어냈더니
연산자가 없다고 지랄해댐
C에서는 const 붙이든 안붙이든 잘만 컴파일 해줬었는데
원래 const 안붙이면 매개변수 형식 다르다고 밑줄 찍찍 싸냐 아니면 MSVC만 그런거냐
원래 아무 이상없던 코드에서 오버로딩에 매개변수 붙어 있던 const 만 떼어냈더니
연산자가 없다고 지랄해댐
C에서는 const 붙이든 안붙이든 잘만 컴파일 해줬었는데
String res("hh") 는 무슨문법임 - dc App
생성자
new안쓰나보네 - dc App
일부러 R-value 로 만들려고 new 안쓴거임
C++이 콘스트 제일 언어임
엄격한 언어
대입 복사생성자 임마
레퍼런스는 const 잇고 없고 차이 많이 나지
값이바뀌면안댐
a = b 일 때, a.operator=(b)로 동작함
이 때, ... operator=(String&)로 정의되어 있다면, a.operator=(b)에서 b는 non-const lvalue여야 함
그러면 const 없이 operator=( String&& )로 정의해주면 R-value 정의 해주는거니까 오류 안뜨는거겠네
ㅇㅇ 마즘
operator=(const T&): 복사생성자
operator=(T&&): 이동 생성자 국룰임
operator=(T&) 노근본 ㅇㅋ?
std 스트링 아닌거 같은데 인자 받는 컨스트럭터 따로 지정해주고 기본 컨스트럭터 안만들었으몬 카피 컨스터럭터 default줘보셈
아 시바 맨위에 보니까 정의해줬네. 저거 와저러노
rvalue뱉었다고 저러나. 에러메세지에 rvalue아니라고 표시해줄것 같은데 그건 아닌가
아니 임마 카피 컨스트럭터 정의에서 지 맘대로 const 뗏다고 에러난다고 글 쓴거자너
String operator=(String& rhs)로 바꾸니까 에러낫다 이러는거 같은데
ㅋㅎㅋ
getName 함수 스택에서 res가 생성되고, 반환값이 String 이니까 R-value로 임시 객체 생성, res 는 삭제됨. 그리고 임시객체로 operator= 가 실행 되는데 이 때의 임시 객체는 R-value 니까 const String& 으로 받아야지, String& 로 받으면 L-value 로 인식해서 오류를 뱉는다. 이거같음
그게 맞는거 가따
근데 getName()은 String을 반환하는 함수임