c++ (9) 썸네일형 리스트형 [c++] visibility 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! Visibility visibility란 공개 api 다룰 때 사용하는 기능이다. 어떤 클래스와 함수등 특정 심볼을 보여줄지 아닐지를 정해 다른 api와 충돌을 최소화하고 공개 라이브러리의 성능을 향상할 수 있다. gcc wiki에 이와 관련된 글이 있다. Visibility - GCC WikiNote: the text on this page was almost entirely written by Niall Douglas, the original author of the patch, and placed on nedprod.com. This copy in the GCC wiki has some .. [c++] __VA_ARGS__, parameter pack 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! Variadic 매크로 Variadic 매크로는 __VA_ARGS__라는 식별자를 사용하며, 매크로 함수에서 가변인자를 받는 기능을 한다. 사용방법은 매우 간단한데, 입력받는 변수에 '...'(parameter pack)을 사용하고 실행하는 변수 부분에 __VA_ARGS__를 사용하면 된다. #define CHECK1(x, ...) if (!(x)) { printf(__VA_ARGS__); }int main() { CHECK1(0, "here %s %s %s", "are", "some", "varargs1(1)\n"); CHECK1(1, "here %s %s %s", "are", .. [c++] 복사 생성자와 복사 대입 연산자 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! class를 작성하면, 생성자나 소멸자처럼 우리가 작성하지 않으면 컴파일러가 자동으로 만들어주는 것이 더 있다. 대표적으로 복사 생성자와 대입 연산자가 있다. 복사 생성자 (copy constructor) 복사 생성자는 우리가 흔히 사용했는데, 객체를 다른 객체로 복사할 때 사용되는 특별한 생성자를 말한다. 기본적인 형태는 다음과 같이 생겼다. ClassName (const ClassName & other) { } 객체 복사에 대한 2가지 방법의 예시가 있다.#include class CopyableClass {public: int x = 0; CopyableClass() { .. [c++] Range-based for loop (범위 기반 for 문) 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! Range-based for loop "표현식(expression)의 각 요소에 대해 문장(statement)을 반복적으로 순차적으로 실행합니다." 라는 범위 기반 for문은 배열이나 vector 등 순회가 가능한 expression속 요소들을 순회하는 기능을 한다. 기존의 for문과 다르게 시작지점과 끝지점을 정해주지 않아도 data list를 전부 순회한다. (파이썬의 for문 순회와 비슷) for ( for-range-declaration : expression ) statement 위와 같은 방법으로 사용한다. expression 속 요소가 declaration 복사되어서 사용.. 04. C++만의 특징 2 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! Reference 참조자 같은 경우는 자신의 참조하는 변수를 대신할 수 있는 또 하나의 이름이라고 할수 있다. 쉽게 말하면, 변수의 또다른 이름을 만들어 주는 것을 말한다. 참조자를 사용하면 포인터의 기능을 사용할 수 있다. int num1 = 10; int &num2 = num1; &를 사용하는 것으로 조금 더 직관적으로 num1의 주소를 num2도 사용한다고 생각 할 수 있다. 참조자는 포인터도 생성이 가능하다. int num = 12; int *ptr = # int **dptr = &ptr; int &ref=num; int *(&pref) = ptr; int **(&dpref) =.. 03. C언어 복습 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! Struct 데이터들을 관리하는데 연관성이 있는 데이터들은 그룹으로 묶어서 관리하면 편하지 않을까? 라는 생각에서 나온 개념이 구조체 이다. 구조체의 기본적인 형태는 다음과 같다. struct point{ ... }; struct point p1; struct point p2; ======================== typedef struct point { ... }POINT; POINT p1; 구조체 변수의 멤버에 접근하기 위해서는 dot(.)연산자 사용한다. p1.~ 과 같이 접근할수 있고, 선언과 함께 초기화를 할 수 있다. #include struct __point { double.. 02. C++만의 특징 1 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! C++의 iostream C++에서 입출력을 담당하는 표준 라이브러리인 iostream (Input/Output Stream)은 다음과 같은 기능을 제공한다. cin 객체를 이용한 입력 cout 객체를 이용한 출력 cerr 객체를 이용한 오류 출력 clog 객체를 이용한 로그 출력 이 중에서 가장 많이 사용되는 것은 cin과 cout 이다. cin 객체는 키보드로부터 입력을 받아 변수에 저장할 때 사용한다. int num; std::cin >> num; cout 객체는 화면에 출력할 내용을 출력할 때 사용한다. std::cout 01. C++의 구조 공부를 하는 입장이기 때문에, 내용에 오류가 있을 수 있습니다. 오류가 있다면 적극적으로 알려주시면 감사합니다! C++의 구조 코드를 작성하고 나면 흔히 컴파일 한다고 한다. 파이썬의 경우 visual studio code같은 개발 환경에서 코드를 작성하고 나면 바로 실행 시켰을 때, 실행이 된다. 하지만 C나 C++의 경우 gcc같은 컴파일러에서 컴파일을 하고 나면 코드가 실행 되는 것이 아닌, 실행 파일이 생성 된다는 것을 알 수 있다. 즉 C++의 경우 우리가 생각하는 컴파일 과정이 사실 조금 나눠져 있다. 이 과정은 크게 세 단계로 나눌 수 있다. 첫째, 소스 코드를 컴파일러가 읽어 기계어로 번역하는 '컴파일' 단계. 둘째, 여러 개의 오브젝트 파일들을 링크하여 하나의 실행파일을 만드는 '링크' .. 이전 1 2 다음 목록 더보기