전체 글
[씹어먹는 C++ - 4-5, 6] 문자열 클래스 만들기, 클래스의 explicit, mutable
4-6 implicit 암시적 변환 explicit 암시적 변환을 할 수 없도록 컴파일러에게 명시 mutable const 멤버 함수는 함수 내부에서 멤버 변수들의 값을 바꿀 수 없다. 하지만 멤버 변수를 mutable 로 선언했다면 const 함수에서도 멤버 변수의 값을 바꿀 수 있다! 필요한 이유 평소에는 변수를 읽기만 하는 역할을 수행하다가 캐시와 같이 변수의 값이 최신 값으로 업데이트가 되어야하는 경우 사용되어야 함
[씹어먹는 C++ - 4-3, 4] 복사 생성자, 소멸자, const, static
4-3 malloc vs new 모두 동적으로 할당한다 new 객체를 동적으로 생성 + 자동으로 생성자도 호출 malloc 메모리 동적 할당만 함 int main() { Marine *marines[100]; // 동적으로 메모리 할당 marines[0] = new Marine(2, 3); marines[1] = new Marine(3, 5); marines[0]->show_status(); marines[1]->show_status(); std::cout show_status(); marines[1]->show_status(); // 동적 할당한 메모리 해제 delete marines[0]; delete marines[1]; }소멸자 (Destructor) 생성한 객체가 소멸될 때 자동으로 호출되는 함..
Math.random() 난수 생성하기
Returns a double value with a positive sign, greater than or equal to 0.0 and less than 1.0. Math.random() 메서드는 0.0 부터 1.0 사이의 랜덤한 double 값을 반환합니다. 원하는 범위의 랜덤한 값을 얻기 위해서는 {얻은 난수} * {원하는 범위} 를 해야합니다. double dValue = Math.random(); // 0.0 ~ 1.0 까지의 랜덤한 수 double dValue10 = Math.random() * 10; // 0.0 ~ 10.0 까지의 랜덤한 수 정수 난수를 얻고 싶다면 (int)({얻은 난수} * {원하는 범위}) 하여 정수로 casting 합니다. int iValue = (int)(Math..
[씹어먹는 C++ - 4-1, 2] 객체지향 프로그래밍, 함수 오버로딩, 생성자
4-1 객체 변수들과 참고 자료들로 이루어진 소프트웨어 덩어리 추상화 객체가 현실 세계에 존재하는 것들을 나타나기 위해 필요한 과정 캡슐화 인스턴스 메소드를 통해 인스턴스 변수들을 간접적으로 조절하는 것 예시 class Animal { private: // 외부에서 접근 불가능한 것들 (생략 가능) int food; int weight; public: // 외부에서 사용가능한 것들 void set_animal(int _food, int _weight){ food = _food; weight = _weight; } void increase_food(int inc){ food += inc; weight += (inc / 3); } void view_stat(){ std::cout
[씹어먹는 C++ - 3] 메모리 할당/해제
언어 할당 해제 C malloc free C++ new delete 변수 메모리 할당 / 해제 T* pointer = new T; delete pointer;배열에 메모리 할당 / 해제 T* array = new T[array_size]; delete [] array;예시 // 변수에 메모리 할당 / 해제 int *num = new int; delete num; // 배열에 메모리 할당 / 해제 int *arr = new int[3]; delete[] arr;
[씹어먹는 C++ - 2] 참조자
C언어에서 변수를 가리키고 싶을 때 사용하는 것 : 포인터 #include int change_val(int *p){ *p = 3; return 0; } int main() { int number = 5; std::cout
[Java] 클래스/객체/메서드
객체지향언어의 특징 코드의 재사용성이 높음 새 코드 작성 시 기존 코드를 이용하여 쉽게 작성할 수 있음 코드의 관리가 용이함 코드간 관계를 이용하여 적은 노력으로 쉽게 코드 변경이 가능 신뢰성 높은 프로그래밍 가능 제어자와 메서드를 이용하여 데이터를 보호하고 올바른 값을 유지하도록함 코드의 중복을 제거하여 코드 불일치로 인한 오동작을 방지함 클래스와 객체 클래스 객체를 정의하여 객체 생성 시 사용 → 틀 객체 정의한 클래스로 만든 속성과 기능의 집합 → 실체 속성 : 멤버 변수 (상태, 값) 기능 : 메서드 (동작) 인스턴스 클래스로부터 만들어진 객체 변수 클래스 변수 : 멤버변수 중 static이 붙은 변수 클래스 영역에 선언 클래스가 메모리에 올라갈 때 생성 모든 인스턴스가 공통된 값을 유지해야하는 ..
[Java] 배열
같은 타입의 여러 변수를 하나의 묶음으로 다루는 것 선언 타입[] 변수이름 = new 타입[길이] // 단일 배열 타입[][] 변수이름 = new 타입[길이][길이] // 다차원 배열출력 for문 사용 Arrays.toString(배열변수) 사용 ** 예시 배열 복사 for문 사용 System.arraycopy() 사용 지정된 범위의 값들을 한 번에 통째로 복사 입력받을 값에 미리 초기화해놓아야 함 src 시작 위치와 dest 시작 위치를 지정할 수 있음 Arrays.copyof() 사용 ** 복사할 배열과 만들 배열의 길이를 선언 복사할 배열보다 배열의 길이가 길다면 나머지 배열 값은 0으로 초기화됨 예시