위임 생성자 호출 할 때 값은 인자 전달 방식으로 초기화 하는게 정상적인 방식이고, 저런 식으로 대입 연산자를 통해 전달하는 방식은 비표준 방식이라고 알고 있는데 내가 잘못 알고있는건가? 아님 교수님이 디폴트 매개변수랑 헷갈렸나
- dc official App
댓글 13
잘짠 코드인데/
ㅆㅇㅆ(124.216)2025-04-25 00:25
니가 말한거->레거시 코드 싸개
그렇게 짜면 욕쳐먹는거
ㅆㅇㅆ(124.216)2025-04-25 00:26
교수님이 짜신거->모던 C++ 기본 표시구조
ㅆㅇㅆ(124.216)2025-04-25 00:26
답글
아 그럼 Circle(1)이것보다 Circle(radius=1) 이게 더 좋은코드에요? - dc App
익명(iaa108234)2025-04-25 00:28
답글
글 하나 씀
ㅆㅇㅆ(124.216)2025-04-25 00:32
그냥 문법오류같은데
익명(121.159)2025-04-25 00:26
글이 안 써지ㅏ노
ㅆㅇㅆ(124.216)2025-04-25 00:32
글 안써져서 걍 여기에 적는다
ㅆㅇㅆ(124.216)2025-04-25 00:37
Circle::Circle() : Circle(radius = 1) {}
Circle::Circle(int r) : radius(r) {}
이게 문제있다라고 보는거 같은데
이는 모던 C++ 생성자 위임 문법임.
ㅆㅇㅆ(124.216)2025-04-25 00:37
Circle():Circle(1) {} 다른 생성자 호출하는건데
순환 위임 막을려고 하는 표준 생성자 문법임
Circle() : Circle(1) {} // 기본 생성자가 위임 생성자
Circle(int r) : radius(r) {} // 실제 초기화 책임
요런식으로도 씀
ㅆㅇㅆ(124.216)2025-04-25 00:37
오히려 기존 생성자 방식은 호출 후에 레거시싸개 되는거
ㅆㅇㅆ(124.216)2025-04-25 00:39
답글
아 무슨 의미인지 알았습니다 감사합니다 - dc App
익명(iaa108234)2025-04-25 00:40
내가 볼땐 Circle::Circle() : Circle(radius = 1) {} 이거 잘못된 사용법 같은데 마치 if (radius == 1)이라고 하고 싶은데 if (radius = 1)이라고 한거와 비슷한 경우같음 의도는 그게 아닌데 우연하게 그렇게 된게 아닌가 싶은데 아닌가 그리고 질문은 생성자 델리게이트인데 레거시 운운은 걍 멤버 초기화 리스트 얘기하려는걸로 보임 근데 그건 옛날 C++에서도 되던거고
잘짠 코드인데/
니가 말한거->레거시 코드 싸개 그렇게 짜면 욕쳐먹는거
교수님이 짜신거->모던 C++ 기본 표시구조
아 그럼 Circle(1)이것보다 Circle(radius=1) 이게 더 좋은코드에요? - dc App
글 하나 씀
그냥 문법오류같은데
글이 안 써지ㅏ노
글 안써져서 걍 여기에 적는다
Circle::Circle() : Circle(radius = 1) {} Circle::Circle(int r) : radius(r) {} 이게 문제있다라고 보는거 같은데 이는 모던 C++ 생성자 위임 문법임.
Circle():Circle(1) {} 다른 생성자 호출하는건데 순환 위임 막을려고 하는 표준 생성자 문법임 Circle() : Circle(1) {} // 기본 생성자가 위임 생성자 Circle(int r) : radius(r) {} // 실제 초기화 책임 요런식으로도 씀
오히려 기존 생성자 방식은 호출 후에 레거시싸개 되는거
아 무슨 의미인지 알았습니다 감사합니다 - dc App
내가 볼땐 Circle::Circle() : Circle(radius = 1) {} 이거 잘못된 사용법 같은데 마치 if (radius == 1)이라고 하고 싶은데 if (radius = 1)이라고 한거와 비슷한 경우같음 의도는 그게 아닌데 우연하게 그렇게 된게 아닌가 싶은데 아닌가 그리고 질문은 생성자 델리게이트인데 레거시 운운은 걍 멤버 초기화 리스트 얘기하려는걸로 보임 근데 그건 옛날 C++에서도 되던거고