목록CS Language Note/C++ 정리 (2)
-
3.1 클래스와 구조체의 유사점 및 차이점- 클래스는 정말 쉽게 생각하면 함수를 포함할 수 있는 구조체라고 할 수도 있다.- 구조체 안에 함수가 존재하는것과 유사하지만, C언어에서는 문법적으로는 클래스와 똑같이 구현하는 것은 불가능하다.TMP a = {"name",age};a.Function(&a) // a.Function() 함수(메소드)를 호출하는데 있어서 차이가 있다. this 포인터와 관련 있다.(객체가 생성된 시점에서의 객체 주소를 모르기 때문에 this 사용) - 구조체와 다르게 "생성자"를 이용해서 초기화 할 수 있다.- 생성자는 반환자료형이 없고, 자동으로 호출되는 함수.- 멤버 변수가 참조자 형식이면 반드시 초기화 목록을 이용해서 초기화 해야한다.(평소에도 사용가능하다)CTEST():m_..
2.1 디폴트 매개변수- c++에서는 절대로 호출자의 코드만 보고 함수 원형을 확정해서는 안된다.- 피호출자 함수 매겨번수의 디폴트 값은 반드시 오른쪽 매개변수부터 기술해야 한다.- 디폴트 매겨변수는 모호성을 야기할 수 있으므로, 가급적이면 자제하는 것이 좋다. (단, 미래 유지보수를 위해서는 필요할 수 있다) 2.2 함수 다중 정의- C에서는 이름이 같은 함수가 존재할 수 없다. C++ 에서는 Overloading 을 통해 함수의 "다형성"을 지원한다.- 함수를 다중 정의하는 이유는 사용자의 편의성과 확장성 때문.- 같은 일을 하는 코드가 다중 정의된 함수가 여러개 존재하면 유지보수 측면에서 매우 비효율적, 따라서 C++ 에서는 가급적 함수 템플릿을 권장함. template 반환형식 함수이름(매개변수)..