1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <iostream> #include <string> using namespace std; class Student { private: string name; string telephone; public: Student(const string n = "", const string t = ""); string getTelephone() const; void setTelephone(const string t); string getname() const; void setName(const string n); }; Student::Student(const string n = "", const string t = "") { name = n; telephone = t; } | cs |
여기에서 10번째 줄에는 n = "" , t = "" 이렇게 했는데
왜 16번째줄에서 외부정의할때는 const string n, const string t
이렇게만 해야하나요 ? = "" 왜 없어야하는건가요 ?
먼말이여 몰라도 됨
https://boycoding.tistory.com/222
디폴트는 매개변수가 없는 생성자를 말하는거 아닌가요 ?
'일부' 없는 일 듯
한번 default를 선언하면 다시 선언 못 해서 그러는거 같은데?
디폴트는 아예 생성자 매개변수 없는 ()를 말하는거 아닌가요 ?
default 생성자 말고 니가 = " "이걸로 넘겨주는 defalut parameter 값
근데 생성자에 왜 저 짓거리를함? 애초에그 parameter 뺀 생성자를 추가하는게 낫지않나?
저 혹시 제가 헷갈려서 그러는데 소스코드로 예시좀 가능할까요? 저 책보고 공부중이라 저짓거리를 왜 했냐고 물어보면 답은 못하겠습니다 ..
디폴트 함수자체가 컴파일할때 디폴트 값 있는함수, 없는 함수 복사하는 식으로 만들어지는건데, 정의부에 디폴트 값을 넣으면 서순때문에 오류나는거 아닐까?
저기 죄송한데 디폴트가 정확하게 뭔가요 ㅠㅠ?
func(int a) 함수를 func(); 이렇게 호출하면 오류 남. func(int a) func() 이렇게 똑같은 함수를 두 개 만들어줘야 하는데, 그게 생산성이 떨어지니 c++에서는 func(int a = @) 이런식으로 쓰면 컴파일할때 자동으로 함수 두개 만들어줌. 이게 디폴트 파라미터임
예컨대 본문 클래스에서 student(const string n = "", const string t = "") 이 생성자는 실제 컴파일할때는 student() student(const string n) student(const string n, const string t) 이렇게 세가지 함수로 나뉘어서 정의됨
근데 외부에서 정의할때는 저렇게 해야하는 이유가 뭔가요 ?..
생성자가 값을 초기화(선언+정의)하는게 아니라 이미 선언된 있는(클래스 몸체에 선언되 있잖음) 멤버 변수에 값을 "대입"하도록 만들어 놨음 ㅇㅅㅇ
그게 좆같아서 멤버 초기화 리스트(이건 초기화로 취급됨) 같이 좀 구질구질한거도 만들어진걸로 암 ㅇㅅㅇ
10번째 저거는 그냥 윗 댓들 생성자 편하게 쓰라고 말대로 편하라고 넣어놓은 기능이고 ㅇㅅㅇ... C++자체가 세월 지나가면서 부족한 부분들 땜질하고 기워서 만든 부분이 많아서 일관성을 기대하는게 난센스임
아 대충 이해는 갑니다.... = "" 하면 재정의가 돼서 안되는거군요