질문이 정확히 이해가 안가네요.
본인의 뇌세포를 자극하는 단점이라는 게 질문을 하신 분, 본인을 뜻하는 건가요? 글의 전개상 해당 문구를 다른 곳에서 복사해오신 것 같은데, 맞나요?
다른 분이 에러가 나니 코드를 수정해야 한다고 하는데, 질문하신 분은 에러가 안나고 정상적으로 잘 실행이 된다..라는 질문으로 이해하고, 답변을 적습니다
정상적으로 잘 실행되는 게 맞을 듯 합니다.
디폴트 생성자의 경우, 아예 메모리를 할당하지 않으므로, 출력할 때도 아무것도 출력되지 않습니다
해당 소스상에서는 구태여 1바이트를 할당해서 NULL문자를 넣어줄 필요가 없습니다.
chqh 님이 쓰신 글 :
: 이 사이트의 일부
:
: http://www.yes24.com/Goods/FTGoodsView.aspx?goodsNo=254391&CategoryNumber=001001003011001
:
: 하지만 이 책에는 본인의 뇌세포를 자극하는 몇가지 단점들이 눈에 띄었습니다.
: 첫째, 부록에 포함된 소스의 에러입니다. 23장을 보면 string 클래스를 정의합니다. string 클래스에서는 문자열을 저장하기 위해 메모리를 동적할당 합니다. 그런데 C++에서 문자열을 저장하기 위해서는 문자열의 길이에 1을 더해서 널(null) 문자가 저장될 공간까지 할당해 주어야 함에도 불구하고 책의 소스에는 널(null) 문자가 저장될 공간을 할당해 주지 않아 에러가 발생합니다. 그리고 디폴트 생성자로 객체를 생성하여 출력을 하는 부분에서도 에러가 발생하는데, 디폴트 생성자의 코드를 다음과 같이 수정하여야 합니다.
:
: string::string()
: {
: m_pStr = new char[1];
: *m_pStr = '\0';
: m_nLen = 0;
: }
:
: -------------
:
: 제 질문 :
: 에라 발생안하는데요 이상하네요 발생하는게 맞을까요?
:
: 그 책의 원래 소스를 첨부합니다.
:
: 이부분과 비교해보세요
: string::string( )
: {
: m_pStr=NULL;
: m_nLen=0;
|