목록Language (36)
ecsimsw
초기화 멤버 변수의 초기화는 선택적이지만, 지역 변수의 초기화는 필수적이다. 멤버 변수를 초기화 하는 방법에는 세가지가 있다. 0. 기본값 1. 명시적 초기화 2. 생성자를 통한 초기화 3. 초기화 블록 0. 기본값 초기화에 앞서, 멤버 변수는 초기화가 선택적이기 때문에 초기화가 안됐다면 자료형 마다 기본 값을 갖는다. boolean = false char = '\u000' byte,short,int = 0 long = 0L float = 0.0F double = 0.0 참조형 변수 = null 1. 명시적 초기화 가장 쉽게, 변수를 선언과 동시에 초기화하는 방식이다. class Person{ String name = "unkown"; int age=0; } 2. 생성자를 통한 초기화 생성자를 이용하여 ..
Int vs Short / Byte 작은 수를 저장할 변수의 타입은 4 바이트까지 과한거 아닌가?. Byte형은 혹시 모르고, 2 바이트 정도면 충분할 거 같은데 Short를 쓰는게 이득 아닐까?? JVM의 Operand stack은 피연산자를 4 바이트로 저장하기 때문에, 그 보다 작은 작료형은 오히려 4Byte로 변환하여 계산된다. => 성능을 고려한다면 int, 정말 공간을 효율적으로 사용해야한다면, 그땐 short나 byte 타입을 생각하자.
1. 포인터는 변수이고 배열 명은 상수이다. 포인터는 다른 주소를 가리킬 수 있지만 배열 명은 오직 배열의 시작 주소만을 가리킨다. 2. 포인터로 메모리를 할당하여 동적인 크기의 배열을 선언할 수 있고, 조절할 수 있다. 반면 배열은 정적인 크기로 선언되어 크기가 변할 수 없다. 3. 포인터 변수의 크기는 4바이트 (32비트 컴퓨터), 8바이트 (64비트 컴퓨터) 이지만 배열 명을 sizeof 할 시 배열의 전체 크기를 구할 수 있다. 4. delete, delete[]를 선호해야하는 이유는 크기를 지정하는 것이 더 안전하기 때문과, delete[]을 이용해야 소멸시키는 객체만큼의 소멸자를 호출하기 때문이다. 추가적으로 포인터에 할당한 메모리를 delete 하는 것과 포인터 변수의 값은 관련이 없다. d..
constructor ary = new int*[count_rows]; for (int i = 0; i
암시적으로 생성자가 호출되면서 발생할 수 있는 의도치 않은 형 변환을 막기 위해 생성자의 명시적 호출을 강제하기 위한 키워드
http://blog.naver.com/PostView.nhn?blogId=wkdghcjf1234&logNo=220210906503 형 변환 연산자: static_cast와 reinterpret_cast의 차이 이번에는 간단하게 static_cast와 reinterpret_cast의 차이점에 대하여 알아봅니다. 실제로 이 두가지는 비... blog.naver.com 다시 정리
typedef OpKernel* (*Factory)(OpKernelConstruction*); - tensorflow source를 분석하다가 위의 typedef로 Factory가 정의되있는 것을 보고 공부하게 되었다. function pointer - 함수를 호출한다는 것은 함수가 정의된 메모리의 시작 주소로 pc를 이동시키는 것을 의미한다. 다른 상수 타입의 포인터와 마찬가지로 함수 포인터 단순히 이런 주소를 담는 변수이다. returnType (*fpName) (parmeters) - 위처럼 가리킬 함수의 리턴 타입, 파라미터와 함께 함수 포인터를 선언하고 같은 형태를 갖는 함수를 대입하여 주소를 저장하고, 이를 호출한다. void foo() { cout