C는 컴퓨터 입장에서 아주 직관적이지만 모르는 사람이 보기엔 이상하게 보인다


char* str = "ABC";

char* str2 = str;

str[0] = 'C'; // str = "CBC" str2 = "CBC"


여기서 str2가 "CBC"가 되는건 컴퓨터 입장에선 아주 당연한거지만 사람이 신경쓰기는 쉽지않다



C++은 그냥 보기엔 꽤 직관적인것 같다


string str = "ABC";

string str2 = str;

str[0] = 'C'; // str = "CBC" str2 = "ABC"


하지만 보기엔 친절해도 사실은 아주 복잡하다

여기서 string(const char*) 생성자와 operator=(const string&) 연산자가 구현되지 않으면 이 당연하게 보이는 식은 안돌아간다


즉 "자바처럼 위에만 신경쓰세요 ^^" 하는 것처럼 보이지만 사실은

"코드는 예쁘게 보여드리지만 안에서 어떻게 되는지는 전부 아셔야해요 ^^" 라는것


그나마 C는 그저 포인터와 구조체, 공용체뿐이지만 C++은 템플릿과 클래스의 조력으로 훨씬 복잡하다

이것들이 어떻게 작동하는지 모르고 코드를 짜면 높은 확률로 제대로 써먹기 힘들다


결국 사람도 컴퓨터한테도 신경쓸곳이 많은 언어다