분류 전체보기 (317) # Lang/C++ 3.1 CV 제한자 (const, volatile) CV 타입 제한자 (Const & Volatile Type Qulifiers)컴파일러에게 특별한 제약을 부과하는 제한자이다.각각 혼자서 사용할 수 있고, 동시에 사용될 수도 있다. const object컴파일러에게 프로그램 내에서 변수의 값의 바꾸는 것을 막으라고 알린다.사용자가 const 변수에 값을 다시 대입하면, 컴파일러는 에러를 발생시킨다.이것은 상수를 선언하는 것과 같으며, 변수에게 non-mutable 속성을 부여하는 것 이다. volatile object컴파일러에게 외부요인 때문에 프로그램에서 건들지 않아도 값이 바뀔 수 있다고 알린다.컴파일러는 volatile object를 섣불리 최적화하지 않는다. 예를 들어, 다음의 코드에서 flag는 프로그램 내부에서 변하지 않으므로 무한루프와 같다... 2019. 3. 31. 17:22 # Lang/C++ 2.3 자료형과 형변환 형변환 (Type Conversions) 어떤 데이터 타입이 다른 데이터 타입으로 변환되는 작업을 형변환이라고 하며, 누가 의도했는지에 따라 암묵적, 명시적 형변환으로 분류된다. 형변환의 종류암묵적 변환 (컴파일러가 형변환을 의도함.)명시적 변환 (프로그래머가 형변환을 의도함.) 암묵적 변환 (Implicit Conversions)T1 형식의 데이터를 T2 형식의 변수에 대입하려고 하는 경우, 컴파일러는 두 자료형 사이의 변환연산를 찾고, 프로그래머의 지시 없이 형변환을 진행한다. Example : int a = 3; double b = a; 프로그래머가 의도적으로 형변환 연산자를 사용하지 않았지만, 컴파일러는 암묵적으로 int를 double로 변환하는 연산을 찾고 형변환을 진행한다. 만약, 컴파일러가 .. 2019. 3. 29. 23:19 # Lang/C++ 2.2 자료형과 데이터 해석 정수 해석 정수 자료형이란 정수를 나타내는 원시 자료형을 말하며, 컴파일 환경에 독립적인 int16_t, int32_t, int64_t를 표준으로 사용한다. 부호있는 정수의 해석 (Signed Integer) 비트열을 부호화된 2의 보수로 해석한다. 부호없는 정수의 해석 (Unsigned Integer) 비트열을 절대값으로 해석한다. 부동소수점 해석 소수점이 둥둥 떠다닌다는 뜻으로, 부동소수점이라는 이름이 붙여졌다. 소수를 표현하는 원시 자료형. 정밀도에 따라 float(단정밀도), double(배정밀도)로 나뉘며, IEEE754 표준에 따라 비트열을 해석한다. 구조체, 클래스 해석 클래스 내의 멤버변수는 메모리 상에서 일렬로 배치된다. 클래스 내의 멤버함수는 해당 클래스의 가상 테이블에 적힌다. 자식 .. 2019. 3. 27. 19:53 # Lang/C++ 2.1 자료형 자료형데이터의 크기와 해석방법을 정의. 본래 데이터는 비트열의 형태로 저장되기 때문에,해석방법을 정의하지 않으면 해석이 불가능하다. [참고자료] 단순히 비트열만 보고 어떤 데이터인지 알 수 있을까? 자료형은 마치 파일의 확장자처럼,데이터의 크기와 비트열의 해석방법을 알려준다. 자료형의 구분자료형은 특성에 따라 3가지로 구분할 수 있다.언어에서 기본적으로 지원하는 자료형. (Built-in type, Pimitive type)프로그래머가 스스로 정의하는 자료형. (User-Defined type)어떤 자료형에서 파생되는 자료형. (Derived type) 원시 자료형프로그래밍 언어에서 기본적으로 지원하는 자료형.단, 언어마다 원시 자료형이 다를 수 있다. bool과 long의 크기에 주목하자. bool은 .. 2019. 3. 26. 21:26 # Lang/C++ 1.3 변수와 메모리 모델 C++ 프로그램 메모리 모델 변수는 올바른 주소가 할당된 뒤에야 사용할 수 있다. 그런데 그 주소는 언제 할당될까? 아무 주소나 할당해도 될까? 이 궁금증을 해소하려면, 프로그램이 RAM에 어떻게 적재되는지 이해해야 한다. 아래의 그림은 RAM에 프로그램이 적재되는 모양에 관한 레이아웃이다. 프로그램이 RAM에 적재되면 주소의 최소치(low)와 최대치(high)이 주어지는데. 모든 데이터는 low와 high 안에서 저장되어야 한다. 만약 외부영역을 건들면 (=다른 프로그램의 영역을 건들게 되면,) 운영체제에 의해 강제로 종료되는것에 주의하자. 정리하자면, 프로그램 내의 모든 변수는 low와 high내에서 주소를 할당받고. 변수의 종류에 따라 할당되는 영역이 달라지게 된다. 리터럴은 .text 영역에 저장.. 2019. 3. 23. 20:53 # Lang/C++ 1.2 변수의 생성 변수의 선언, 대입, 초기화변수를 생성하는 것을 선언(Declaration)이라고 하며,선언된 변수는 메모리가 할당되어야만 사용할 수 있다. 선언과 동시에 값을 지정하는 것을 초기화(Initialization).선언된 이후에 값을 지정하는 것을 대입(Assignment)이라고 한다. #include int main() { // 선언되었지만, 초기화되지 않음. int32_t a; // 값이 대입됨. a = 0; // 선언과 동시에 초기화됨. int32_t b = a; } 변수를 초기화하는 다양한 방법Assign 연산자를 통한 초기화.Constructor를 통한 초기화.Uniform Initialization을 통한 초기화. (Since C++11)#include int main() { // (1) Init.. 2019. 3. 21. 16:11 # Lang/C++ 1.1 변수의 정의 변수 (Variable) 프로그램에서 데이터를 저장하기 위해 사용되는 것. 데이터의 위치와, 해석방법, 식별자(변수명)의 조합이며. 이 정보들은 함께 묶여서 컴파일 타임에 심볼 테이블에 저장된다. 데이터 위치데이터를 저장하기 위해서는 사용되지 않는 RAM 공간에 데이터를 적재해야 한다. 성공적으로 적재했다면 해당 메모리의 위치를 기억해야 할 필요가 있는데, 데이터가 어디있는지 모른다면, 데이터를 잃어버린 것과 똑같기 때문이다. C++은 심볼 테이블(Symbol Table)에 각 변수명과 메모리 위치, 자료형을 함께 적어놓는데. 변수에 접근할 때 마다, 심볼 테이블을 거쳐 메모리의 위치를 가져오게 된다. int data1; double data2; 데이터 해석방법RAM은 모든 데이터를 이진수(비트열)로 저.. 2019. 3. 20. 23:38 # Lang/C++ 모던 C++14(17) 학습목차 챕터 1 : 변수와 자료형1. 변수 (Variable)변수의 정의변수의 생성메모리 모델2. 자료형 (Data Type)자료형자료형에 따른 데이터 해석형변환과 캐스팅3. 한정자와 지정자 (Qualifiers & Specifiers)CV 한정자기억영역 클래스 지정자 챕터 2 : 값의 이동과 복사4. 표현식과 값 (Expressions & Value)표현식값의 분류값의 참조5. 복사, 이동 의미론 (Copy & Move Semantics)복사, 이동 의미론완벽한 전달 챕터 3 : 값의 초기화6. 초기화 (Initialization)Local 변수 초기화중괄호 리스트 초기화이니셜라이져 리스트균일된 초기화 방식Non-Local 변수 초기화복사제거 챕터 4 : 포인터와 참조7. 포인터와 참조 (Pointer & R.. 2019. 3. 20. 19:24 이전 1 ··· 17 18 19 20 21 22 23 ··· 40 다음