프로그래밍 공부

전문가를 위한 C++정리 73

카테고리 설명
  • 1.3 객체지향 언어로서의 C++ C언어 개발자 입장에서 앞에 나열된 C++의 기능을 보았다면 단지 좀 더 편리한 기능이 추가되었다고 생각할 수 있다. C++ 라는 이름 자체가 암시하듯이 더 나은 C라는 측면이 있는것은 분명하다. 하지만 한 가지 넘겨짚을 수 없는 진일보한 부분이 있는데 C와는 달리 객체지향 언어라는 점이다. 객체지향 프로그래밍(ObjectOriented Programming(OOP)) 는 상당히 다른, 논란이 있긴 하지만 보다 자연스러운 코딩 방법이다. 1.3.1 클래스의 정의 클래스(class)는 객체의 특성을 정의한다. C++ 에서 클래스는 보통 헤더파일에서 선언하고 상세 정의는 관런 소스파일 (.cpp)에서 작성한다. #include class AirlineTicket { publ..

  • 1.2.6 타입 추론2 decltype(auto) auto를 이용하면 표현식의 타입이 자동으로 연역된다. 만약 const 한정자가 붙어있다면, const 속성을 없애버린다. decltype은 이런 효과가 없기 때문에, 중복코드를 만들게 되는데, 해결을 위해 C++14부터는 decltype(auto)를 도입했다. const string message = "Test"; const string& foo() { return message; } auto f1 = foo(); 여기서 foo()를 호출하여 리턴값을 auto 변수에 담을 수 있다. 그런데, auto는 함수 foo()의 리턴값을 가진 const 속성을 없애기 때문에, f1은 string타입이 되며 복제본이 만들어지게 된다. 만약, f1이 const참조형..

  • 1.2.5 Const 가 사용되는 여러가지 상황 const 키워드는 C++에서 여러 가지 목적으로 사용된다. const의 모든 사용 케이스는 서로 연관되어 있기는 하지만, 각기 미묘한 차이가 있다. const 상수 const는 constant에서 왔다. C에서는 버전 번호와 같이 실행되는 동안 절대 변하지 않는 상수값에 이름을 부여하여 활용할 때 #define 전처리 메크로를 이용한다. C++에서는 #define대신 const 키워드를 사용하는걸 권장한다. cosnt키워드를 이용해서 상수값을 정의하는 것은 보통의 변수를 선언하는것 과 같은데, 단지 const키워드를 선언문 앞에 붙인다는 점이 다르다. const로 선언된 변수는 컴파일러에 의해 변숫값이 바뀌지 않도록 보증되는 것이 일반 변수와 다른 점이다..

  • 1.2.4 예외처리 C++는 유연한 언어이기는 하지만 딱히 안전한 언어는 아니다. 작성한 코드가 엉뚱한 메모리 영역을 헤집거나, 0으로 나누기(컴퓨터가 표현 불가)를 시도해도 컴파일러가 걸러주지 않는다. C+의 익셉션(exeption)은 코드의 안정성을 높이기 위해 언어차원에서 제공되는 기능이다. 익셉션 : 예상치 못한 상황 웹페이지를 가져오는 함수를 작성할 때, 페이지를 서비스하는 인터넷 호스트가 다운되었을 수도 있고, 페이지가 없어지거나, 연결이 해제되어버릴 수도 있다. 많은 프로그래밍 언어에서 함수의 리턴값을 nullptr이나 특별한 에러코드에 매핑하는 방법으로 대응한다. 그러나 익셉션은 더 쉽게 처리할 수 있다. 익셉션에서는 몇가지 새로운 용어가 도입되었다. 특정 코드가 예외적인 상황을 인지하면 ..

  • 1.2.3 C++의 문자열 C++에는 문자열을 다루는 세 가지 방법이 있다. 기존 C와 같이 문자의 배열로 이용 C++에서 제공하는 string타입을 이용 비표준적인 방법으로 프로그래머가 C++ 타입 정의 기능을 이용하여 직접 정의 당장은 C++의 string타입이 헤더 파일에 정의되어있고 C++에서는 string타입을 기본 타입처럼 사용한다는 것만 알면 된다. I/O스트림과 마찬가지로 string은 std네임스페이스 에 속한다. std::string mySring = "Hello, World"; cout

  • 1.2.2 참조형 함수의 전형적인 패턴은 0개 또는 1개 이상의 파라미터를 받아서 계산을 하고 하나의 결괏값을 리턴하는 것이다. 하지만 이런 패턴이 맞지 않는 경우도 있다. 리턴하고 싶은 결곽값이 2개 이상일 수도 있고, 파라미터로 넘겨진 변수를 함수에서 변경해주길 원할 수도 있다. 이런 경우 C에서는 변수 대신 변수의 포인터를 전달하여 해결한다. 이러한 방법의 유일한 단점은 포인터 조작 때문에 코드가 지저분해지는것 이다. C++에서는 포인터 없이도 명시적으로 참조에 의한 전달(Pass by Referance)를 지원한다. 함수 파라미터의 정의부에서 각 파라미터 변수 이름 앞에 & 연산자를 붙이는 것이다. 사용법은 보통 변수와 동일하지만 내부적으로는 함수 안에서도 함수 호출 시 사용된 변수의 포인터가 사..