일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- porterduff
- LAYER_TYPE_SOFTWARE
- null safety
- test
- error
- quick-start
- dataginding
- kotlin
- fabric-sdk-java
- bigquery
- Android
- 스트리밍
- Glide
- web3js
- hardwareacceleration
- C
- Gradle
- firebase
- coroutines
- 컴파일
- log
- 안드로이드
- convert
- 다윈
- fabic
- Hyperledger
- ethereum
- vuepress
- Realm
- Exception
- Today
- Total
목록분류 전체보기 (212)
날마다 새롭게 또 날마다 새롭게
[문학의 도끼로 내 삶을 깨워라] -문정희- 본문 중에서.. 시는 나에게 공중에 매단 외줄이었다. 나는 어린 날부터 지금까지 그 줄을 타는 줄광대였다. 오직 시 속에서 자유로웠고 시 속에서 용감했으며 시 속에서 아름다웠다. 그러나 땅에 내려오면 더없이 한심하고 무력한 겁쟁이였다. 왜 나는 그것을 비극이라거나 불행이라는 이름으로 부르지 않고 축복이라는 이름으로 부르고 있는 것인가. 쓸 때만이 나는 살아있는 목숨이고 나의 최대 영광은 글을 쓸 때 뿐이니까. 그 다음은 없는 것이니까. 나는 나에게 말한다. "그냥 쓰고 또 써라. 그것이 전부임에랴."
C++ 스타일의 초기화 방식은 다음과 같이 두 가지로 볼 수 있다.int num=20; 혹은 int num(20);위의 두 가지 초기화 방식은 결과적으로 동일하다. 객체 초기화 방식도 두 가지로 볼 수 있는데, 먼저 익숙한 대입 연사를 사용한 초기화 방식은 다음과 같다.SoSimple sim1(15,20); SoSimple sim2=sim1;sim2 객체를 새로 생성해서 객체 sim1과 sim2 간의 멤버 대 멤버 복사가 일어난다고 볼 수 있다. 이 명령을 또 다른 초기화 방식을 적용하여 입력하면 다음과 같다.SoSimple sim2(sim1);sim1은 객체 이므로 객체를 인자로 받을 수 있는 생성자 호출이 이루어지고 있는 것을 볼 수 있다. 그렇다면 객체를 인자로 받을 수 있는 생성자는 어떻게 정의되..
이니셜라이저의 역할은 클래스 생성 시, 클래스 내의 멤버변수를 초기화하는 것이다.이니셜라이저는 다음과 같은 형태로 정의한다.class Rectangle{Point upLeft;Point lowRight;public:Rectangle(int x1, int y1,int x2, int y2);}Rectangle::Rectangle(int x1, int y1,int x2, int y2):upLeft(x1,y1),lowRight(x2,y2){}이 중에서 :upLeft(x1,y1),lowRight(x2,y2) 가 이니셜라이저이다.생성자 함수 내에서도 멤버변수를 초기화 할 수 있지만, 클래스 내부의 Point 객체는 아래와 같이 함수 내부에서 초기화할 수 없다.{ upLeft(x1,y1);}하지만 이니셜라이저를 이용..
#ifndef ~ #endif 는 헤더파일의 중복포함을 막기 위해서 사용하는 매크로이다.사용 방법은 다음과 같다.#ifndef __POINT_H_#define __POINT_H_typedef struct __point{ int x; int y;} point;#endif__POINT_H_ 가 정의 되어있지 않으면 __POINT_H_를 정의하고 __point 구조체를 선언한다. 위 헤더파일이 한번이라도 포함이 되면 __POINT_H_는 정의되어 있기 때문에 __point 구조체가 중복 정의 되지않는다.
구조체(클래스)는 서로 다른 타입을 갖는 변수들의 집합이다.구조체의 선언은 다음과 같다.Struct 이름{멤버 목록} 변수명;Struct 이름 변수명;사용자 정의형 타입을 만드는 명령어 typedef 를 사용하여 보다 더 편하게 선언할 수 있다.typedef struct 이름 { 멤버목록} 변수명;이름 변수명;연관있는 서로 다른 타입의 변수들을 하나로 묶어주면 프로그램을 구현하고 관리하는데 용이하다.그렇다면 다음은 연관있는 변수들을 그룹화 하고 이를 처리하는 함수들을 구조체에 포함시켜 보자.C에서는 Struct에 데이터들만 모아놓았지만 C++에서는 다음과 같이 Struct 내 함수 삽입이 가능하다.Struct 이름 {변수들 :char name[100];int age;int height;Struct 내 변..
참조자는 이미 선언된 변수를 대신할 수 있는 또 다른 이름을 말한다.(일종의 별명,, 호 같은 것으로 생각하면 될 것 같다.)예를 들어,,,int num1 = 100;위와 같이 100이라는 값을 갖고 있는 num1 이라는 변수가 있을 때, 우리는 참조자를 이용하여 num1에 또 다른 이름을 부여할 수 있다.num1에 또 다른 이름을 부여하는 명령의 형태는 다음과 같다.int &num2 = num1;위의 명령으로 num1에 num2라는 또 다른 이름을 주었고, 우리는 num1과 num2 두 개의 변수를 사용하여 100이라는 값에 접근할 수 있다. 참조자를 사용하여 다른 함수의 지역변수에 접근이 용이하다. 하지만 데이터를 가져다 쓰는 것만이 아니라 데이터를 변경할 수도 있기 때문에 참조자를 통한 데이터 변경..
메모리는 데이터와 명령어를 저장하는 공간을 말한다.프로그램 실행 시 사용하는 메모리 공간은 Hard Disk, Ram, Cache, Register 4개 영역이 있다. 이 4개의 영역을 운영체제가 단순화하여 하나의 메모리 공간으로 만드는데 이를 가상 메모리 공간이라고 한다.Hard Disk + Ram + Cache + Register = 가상메모리가상 메모리는 역할에 따라서 코드 영역, 데이터 영역, 힙 영역, 스택 영역 이렇게 4개의 공간으로 나뉩니다.코드 영역 : 코드를 저장하는 공간으로 프로그램 실행 시, CPU가 이 곳에서 명령어를 하나씩 가져가서 처리한다.데이터 영역 : 프로그램이 종료될 때까지 지워지지 않는 데이터를 저장하는 공간으로 전역변수, const 상수, static 변수 등이 있다.힙..
전처리기는 소스코드를 컴파일하기 전에 보기 좋게 소스코드를 재 작성하는 역할을 한다.전처리기에서 처리하는 전처리기문은 보통 명령어 앞에 #이 붙어있다.예를 들어, 다음과 같은 형태를 갖는다.#include, #define, #pragma, #ifdef
매크로 함수는 다음과 같은 형태로 정의된다.#define SQUARE(x) ((x)*(x))함수 내에서 호출 시, 다음과 같은 형태로 사용한다. SQUARE(5);이 코드는 프로그램을 실행하기 전에 전처리기에서 사용자가 define 으로 정의한 형태 그대로 치환한다. 위의 코드를 치환하면 다음과 같다.((5)*(5));매크로 함수 사용 시, 전처리기가 정의되어 있는 형태 그대로 치환하기 때문에 전체식과 개별 인수에 모두 괄호를 사용하는 것이 좋다.