일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C
- dataginding
- coroutines
- 안드로이드
- kotlin
- 스트리밍
- Realm
- 다윈
- 컴파일
- fabric-sdk-java
- Hyperledger
- porterduff
- Android
- error
- Gradle
- quick-start
- Glide
- log
- firebase
- fabic
- web3js
- ethereum
- test
- hardwareacceleration
- LAYER_TYPE_SOFTWARE
- convert
- bigquery
- null safety
- Exception
- vuepress
- Today
- Total
목록분류 전체보기 (212)
날마다 새롭게 또 날마다 새롭게
nautilus-open-terminal pakage를 설치하여 탐색기에서 바로 터미널 실행할 수 있다1. sudo apt-get install nautilus-open-terminal : pakage를 설치한다.2. sudo reboot : 재부팅 후 적용된다.
sudo vi /etc/default/grub 에서 수정할 수 있다.sudo update-grub 한 후, 재부팅한다.
■ Pipe 파이프는 파이프 기호 왼쪽 명령어의 출력을 오른쪽의 명령어의 입력으로 입력으로 보낸다.예를 들어 cat /etc/profile | more 는 cat 명령어를 사용하여 /etc/profile 내용을 출력한 결과를 more 명령어의 입력으로 보내어 한 페이지 단위로 출력할 수 있다.■ Grep파일 전체를 뒤져 정규 표현식에 대응하는 모든 행들을 출력하는 명령어다. 기본 형식은 다음과 같다. grep .. 예를 들어 grep root /etc/passwd 는 /etc/passwd 에서 root를 포함한 모든 행들을 출력할 수 있다.※ Grep과 PipePipe와 Grep을 사용하여 리눅스 내 수많은 소스 파일에서 내가 원하는 정보를 쏙쏙 뽑아낼 수 있다. 예를 들어 ps -ef | grep ro..
■ 우분투 설치 후, 한글 입력이 안되는 경우..우분투를 설치하여 시스템 설정 - language Support 로 들어가서Keyboard Input method system에 ibus 를 선택한다.그리고 ibus-Korean pakage를 다운 받는다.ibus - korean pakage 는 터미널에서 다음과 같이 입력하여 설치할 수 있다.명령어 : sudo apt-get install ibus ibus-koran설치 후, 오른 쪽 상단의 키보드 모양을 클릭하여 설정창으로 들어가Input Method에 한글을 추가하면 한글 입력을 할 수 있다.■ Locale 변경apt-get install language-pack-ko (필요한 경우)locale-gen ko_KR.EUC-KRdpkg-reconfigur..
객체 간 대입연산 시 대입 연산자를 정의하지 않으면 디폴트 대입 연산자가 삽입된다. 디폴트 대입 연산자는 멤버 대 멤버의 복사가 얕은 복사로 진행 된다. 그렇기 때문에 연산자를 동적 할당하고 있는 객체를 디폴트 대입 연산자로 연산하게 되면 메모리 누수와 메모리 중복 해제하는 문제가 발생한다. 그러므로 문제가 발생하지 않도록 직접 대입 연산자를 정의하도록 한다. 연산자를 동적 할당하는 경우 대입 연산자를 다음과 같은 형태로 정의한다.■ 깊은 복사를 진행하도록 정의한다.■ 메모리 누수가 발생하지 않도록, 깊은 복사에 앞서 메모리 해제의 과정을 거친다. ※ 상속 구조에서의 대입 연산자 호출 유도 클래스의 생성자에는 아무런 명시를 하지 않아도 기초 클래스의 생성자가 호출되지만 유도 클래스의 대입 연산자에는 아무..
클래스 중에서 객체 생성을 목적으로 하지 않는 클래스도 존재한다. 이러한 클래스는 객체가 생성되지 않도록 하기 위해서 '순수 가상함수'를 선언한다. '순수 가상함수'는 함수의 몸체가 정의되지 않은 함수로 명시적으로 몸체를 정의하지 않았다고 컴파일러에게 알려주는 역할을 한다. '순수 가상함수' 선언이 되어 있는 클래스를 생성하려고 하면 컴파일 에러가 발생한다. 이렇게 '순수 가상함수'를 선언하여 객체 생성이 불가능한 클래스를 추상 클래스라고 한다.
부모 클래스의 포인터는 자식 클래스를 가리킬 수 있으나 자식 클래스의 멤버에는 접근하지 못한다. 다음과 같이 부모 클래스 포인터가 자식 클래스를 가리키고 있을 때를 살펴보자.먼저 First MyFunc;tptr->MyFunc; 결과가 어떻게 되겠는가? 부모 클래스는 자식 클래스를 가리킬 수는 있으나 자식 클래스 멤버를 사용하지는 못하므로, C++ 컴파일러는 실제 가리키는 객체의 자료형을 기준으로 하지 않고 포인터의 자료형을 기준으로 하여 함수를 호출하게 된다. 그러므로 결과는 다음과 같다.FirstFuncSecondFuncThirdFunc 그렇다면 포인터의 자료형이 아닌 실제 가리키는 객체의 자료형을 기준으로 함수 호출은 어떻게 할 수 있는가? 바로 가상함수(Virtual Function)을 이용하면 포..
함수 오버로딩전달 인자가 다르고 동일한 이름의 함수 정의를 함수 오버로딩이라고 한다.int MyFunc(int num)int MyFunc(int a, int b)함수 호출 시, 전달되는 인자에 따라 함수를 구분할 수 있다. 함수 오버라이딩부모 클래스와 유도 클래스에 동일한 이름의 함수 정의를 함수 오버라이딩이라고 한다.int Paren::GetPay() const;int Derived::GetPay() const;함수가 오버라이딩 되면, 오버라이딩 된 부모 클래스의 함수는 유도 클래스의 함수에 가려진다.
상속은 부모님으로부터 어떤 대상을 물려받는 것을 말한다. 클래스 상속도 원래 상속이 갖고 있는 의미와 마찬가지로 부모 클래스가 가지고 있는 것을 자식 클래스에게 물려주는 것을 말한다. 다시 정리하면,A 클래스가 B 클래스를 상속한다.라는 말은 A 클래스는 B 클래스의 모든 멤버를 물려받았다 라는 것을 의미한다. 상속에 대한 정의는 다음과 같이 한다. "class A : public B{ .... }" 주의사항.. A 클래스가 B 클래스를 상속하기 위해서는 B 클래스가 먼저 생성되어 있어야 한다...... 닭이 먼저냐 달걀이 먼저냐..... 그렇다면 이 상속은 왜 필요한가? 상속을 통해서 부모가 가진 특성들을 그대로 갖고 있는 여러 자식 클래스들을 만들어 사용할 수 있다는 장점이 있다. 예를 들어, S 클..
static 멤버변수는 클래수 변수라고도 한다. 그 이유는 클래스당 하나씩만 생성되기 때문이다. 클래스를 생성하건 생성하지 않건, 메모리 공간에 딱 하나만 할당 되어 공유되는 변수이다.주의할 사항static 멤버변수는 클래스가 생성될 때, 동시에 생성되지 않으므로 static 멤버변수의 초기화는 생성자에서 초기화하면 안 된다. static 멤버변수 초기화는 다음과 같이 한다.int SoSimple::simObjCnt=0;static 멤버함수 역시 static 멤버변수와 동일한 특성을 갖는다.단, static 멤버함수 내에서는 static 멤버함수와 static 멤버변수만 호출 가능하다. 그 이유는 초기화를 따로 해줘야하는 이유와 같다. 클래스의 생성과 상관없이 생성되기 때문이다.