프로그래밍 공부

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

카테고리 설명
  • 1.1.7 조건문 조건문은 주어진 표현식의 결과가 참(true)인지, 거짓(false)인지 에 따라 특정 코드의 실행 여부를 결정할 수 있게 해준다. C++ 에서는 주로 세가지 형태의 조건문을 사용한다. if/else 문 가장 흔한 조건문은 if문으로, 보통 else 문과 함께 사용한다. if문은 조건이 참이면 if문 아래 블록 또는 블록이 없을 경우. 바로 아래 라인의 코드를 실행한다. 조건이 거짓이라면, else블록의 코드를 실행한다. else 블록이 없다면, if문 블록 아래 라인의 코드가 실행된다. if문의 괄호 영역에 들어갈 구문은 반드시 불(Bollean)변수 이거나, 불타입의 결과값을 가져야 한다. 논리 산출 연산자는 표현식이 true, false의 불타입 결과를갖게 해준다. switch문 ..

  • 1.1.6 데이터 타입 C++에서는 int, bool 과 같은 기본 데이터 타입을 이용하여, 좀 더 복잡한 데이터 타입을 정의할 수 있다. C++에 익숙해지고 나면 C언어에서 상속받은 데이터 티입보다 class를 이용한 더 효과적인 방법을 이용하게 될 것 이다. 다음 설명하는 두가지 방법은 데이터 타입을 정의하기 위한 기초적인 내용이다. 열거타입 정수(int) 타입은 엄밀히 말하면 특정 범위에 속한 숫자들의 나열이다. 열거타입(enumeration type)은 어떤 숫자들을 나열할지 프로그래머가 마음대로 정할 수 있게 해준다. 예를들어 enum마냥, 객체의 고유번호를 int값을 할당하여 종류를 나타내는 고유번호로 이용할 수 있다. const 제한자를 붙이면, 해당 변수값이 절대 바뀌지 않음을 명시적으로 ..

  • 1.1.5 연산자 변수는 이름이 뜻하는 바와 같이 변경하면서 사용할 수 있어야 한다. 연산자는 C++에서 변수값을 변경할 때 사용할 수 있는 항목을 이야기한다. C++의 연산자는 이항 연산자(binary operator)[두 개의 변수를 대상으로 하는 연산자] 단항 연산자(unary operator)[하나의 변수를 대상으로 하는 연산자] 삼항 연산자(ternary operator)[세 개의 변수를 대상으로 하는 연산자] 가 있다. C++에서는 삼항 연산자는 단 한개밖에 없다. 연산자 설명 사용 예 = 오른쪽에 있는 값을 왼쪽에 있는 변수에 대입하는 이항 연산자. int i; i = 3; int j; j = i; ! true/false 논리값을 반전시키는 단항 연산자. bool b = !true; bool..

  • 1.1.4 리터럴 리터럴은 숫자나 문자열을 코드 안에서 표현할 때 사용하는 방식이다. C++는 몇 가지 표준 리터럴을 지원한다. 숫자는 아래와 같은 방식으로 표현할 수 있다. 밑 예제는 모두 같은 숫자를 의미한다. 십진수 리터럴 : 123 8진수 리터럴 : 0173 16진수 리터럴 : 0x7B 이진수 리터럴 : 0b1111011 이 외에 C++에서 지원하는 리터럴은 다음과 같다. 부동소수점값 : 3.14f 배정밀도 부동소수점값 : 3.14 문자 하나 : 'a' zero 값으로 끝나는 문자 배열 : "character array" 숫자 리터럴에 자릿수 구분자를 사용할 수도 있다. 자릿수 구분자로 작은 따옴표가 이용된다. int number1 = 23'456'789; float number2 = 0.123'..

  • 1.1.3 변수 C++에서 변수는 코드 내 어디에서나 선언할 수 있고, 선언한 후에는 해당 선언이 속한 블록 내의 선언 이후 코드에서 그 변수에 접근할 수 있다. 변수를 선언할 떄는 초깃값을 설정해야 하지만, 초깃값을 설정하지 않고도 가능하며, 그렇게 하면 초깃값은 변수가 할당된 메모리 영역에 들어있던 값이 된다. 이러한 값은 쓰레기값으로, 명시적인 초깃값 설정이 없는 변수 선언은 버그를 유발할 수 있기 때문에 피하는것이 옳다. int uninitializedInt; int initalizedInt = 7; cout

  • 1.1.2 네임 스페이스 네임스페이스(namespace)는 코드 내에서 이름이 같은 변수명이나 함수명이 서로 충돌하는 문제를 해결하기 위해 고안되었다. 예를들어 foo() 함수를 만들어놓고, 나중에 외부 라이브러리를 사용해야만 하는 상황이 되어서 이용하려고 봤더니 외부 라이브러리에도 foo () 함수가 있는 것이다. 이런경우 컴파일러 입장에서 어느 foo() 함수를 사용해야 할 지 알아낼 방법이 없다. 그렇다고 라이브러리 함수명을 foo()에서 다른것으로 바꾸자니, 라이브러리에서 foo()참조부분을 모두 고쳐야 해서. 여간 까다로운것 이 아니다. 반대로 내가 작성한 foo()함수를 고치는것 또한 같은 문제에 빠지게 된다. 네임스페이스는 이런 문제상황을 쉽게 해결해준다. 특정 코드 영역에서 참조하는 이름을..