분류 전체보기 67

[C++] Unscoped & Scoped Enumerations

Enum Type: 이름으로 값 구분 Enum Type의 객체는 Enum 값 중 하나만 가질 수 있다 Enum 값은 integral 타입이다. 값이 할당되지 않은 Enumerator는 자동으로 첫번째 enumerator가 0이 된다. unscoped enum의 예) enum Suit { Clubs, Diamonds, Hearts, Spades }; Suit suit = Clubs; enum Suit { Clubs = 1, Diamonds = 2, Hearts = 4, Spades = 8 }; Scoped Enumeration은 unscoped Enumeration과 비슷하지만 다음 점이 다르다: - 모든 enumerator가 자기 자신 스코프에 있어야 한다 - integral type이 값으로 사용된다 ..

C++ 2023.11.22

[C++] 참조

참조는 이미 존재하는 객체의 alias이다. 참조에는 두 종류가 있다 - lvalue 참조 - rvalue 참조 T의 lvalue 참조 : T& T의 rvalue 참조 : T&& 참조를 초기화하는 것을 reference binding이라 한다. lvalue와 rvalue 참조는 바인딩 속성에서 차이가 있다.(어떠한 종류의 객체 타입이 바인딩 될 수 있는지) 대부분의 경우에는 lvalue 참조가 사용된다 rvalue 참조는 이동 생성자, 이동 대입 연산의 경우에 사용된다. int x; int& y = x; // y: lvalue 참조 int&& tmp = 3; // tmp : rvalue 참조 int i = 42; int& j = i; assert(j == 42); 참조와 포인터의 차이: 비슷하지만 다르다..

C++ 2023.11.22

[C++] 포인터

포인터: - 다른 객체가 저장되어 있는 주소를 값으로 갖는 객체 - 객체 타입 T에 대한 포인터 타입은 T* - 포인터가 어떤 주소도 가리키지 않을 경우 널 포인터(null pointer) - nullptr - 포인터가 가리키는 객체에 접근하는 것을 dereferencing이라 함 - dereferencing은 indirection operator * 를 사용 - p : 포인터, *p : 포인터가 가리키는 객체 - x가 타입 T의 객체라면, &x는 객체의 주소이며, 타입은 *T이다 char c; char* cp = nullptr; char* cp2 = &c; int i = 42; int* p = &i; assert(*p = 42); assert 함수 - C언어 헤더파일 : - C++ 헤더파일 :

C++ 2023.11.22

[C++] 선언과 정의

선언(declaration) : identifier를 소개하는 것, (identifier에 대한 모든 정보를 제공할 필요는 없다) - 객체라면 객체의 타입과 이름만 - 함수라면, 파라미터의 개수, 각 파라미터의 타입, 리턴 타입 정도만 정의(definition) : identifier와 연관된 entity, identifier에 대한 모든 정보를 제공하는 것 - type이라면 type과 관련된 모든 상세 정보 - object라면, 공간이 allocated 되도록 해야 하고, object가 created 되도록 하는 것 - function이라면, 함수 본문 객체의 경우에는 객체의 선언이 곧 객체의 정의가 된다. 선언은 여러번 할 수 있지만, 정의는 한 번만 일어난다. 예시 int count; // decl..

C++ 2023.11.22

[C++] g++ 사용법 및 g++ 옵션들

g++이란? GNU Compiler Collection (GCC) C++ Compiler C++ 코드를 컴파일하고, 링크를 할 때 사용 기본 사용법 file.cpp를 컴파일해서 오브젝트 코드 file.o를 생성할 때: g++ -c file.cpp 오프젝트 파일 file_1.o, file_2.o, ... 를 링크하여 실행파일 executable을 생성할 때 : g++ -o executable file_1.o file_2.o ... 옵션들 -c : compile only(link는 하지 않음) -o file : output 경로를 file로 지정 -g : debugging 정보를 포함 -On : 최적화 레벨 설정, 0: 거의 없음, 3: 최대 -std=c++20 : c++20 표준을 사용 -Idir : in..

C++ 2023.11.22

Ubuntu에 CMAKE 설치하기

1. apt 를 이용한 설치 (구버전이 설치됨) $ sudo apt install cmake 2. 직접 최신버전 설치 2.1 홈페이지에서 다운로드 https://cmake.org/download Download | CMake Current development distribution Each night binaries are created as part of the testing process. Other than passing all of the tests in CMake, this version of CMake should not be expected to work in a production environment. It is being produced so that us cmake.org 2.2 w..

카테고리 없음 2023.11.04