///...
Chulsoo(const char* name) {
this->name = new char[strlen(name) + 1];
strcpy_s(this->name, strlen(name) + 1, name);
cout << "Chulsoo::Chulsoo(name) 생성자 완료" << endl;
}
///...
Chulsoo chulsoo("철수");
이 코드에서 const를 지우면 해당 매개변수에 맞는 생성자가 없다고 오류뜨네 ㄷㄷ;;;
8개의 댓글
무분별한 사용은 차단될 수 있습니다.
esibel
댕글링 문제 아닌가?
c++이면 string을 쓰도록하자
Tbps
이제 소멸자 넘어가고 복사생성자 부분 볼려하는데 소멸자 예제 코드 작성해보니 저러네
검은수달
http://sweeper.egloos.com/893289 여기에서 참고 해보시길, 저도 C++ 은 안한지 좀 되서 잘 기억이 안나서리...
잉텔
C++ 5년 해보면서 느낀건데
const char*는 char*, const char* 둘다 받을 수 있지만
char*는 const char*를 받을 수 없음..
읽고쓰기 가능한놈(char*)이든 읽기전용이든(const char*)든 함수가 읽기(const char*)만 하는건 문제가 없다는거고.
함수가 읽기쓰기 가능한놈(char*)을 받겠다는데, 읽기전용(const char*)을 넘기는건 위험하잖아?
Tbps
그것도 그렇네
C로 했을때는 별 신경 안썻던거 같은데 C++하니까 이러네
심지어 예제도 const가 빠져있음 ㅋㅋㅋㅋ
잉텔
C보다 C++이 저런 검사 빡시게함..
C++에서 C호환이나 C처럼 쓰고 싶으면 extern "C"를 써야됨
Tbps
ㅇㅎ 알려줘서 고맙다 ㅋㅋㅋㅋ
잉텔
사실 일반 컴퓨팅 상황에선 문제 없는데, 이제 MCU같은놈들은 ROM이랑 SRAM을 같은 주소로 사용하는놈들이라서
const char* 붙은놈은 ROM에 위치시키는 경우가 있음...