1. 연산자 오버로딩 형태2. 대입 연산자 3. 전위/후위 연산자 연산자 오버로딩 형태[반환값]operator[연산자]([인자])ex) int operator+(const int& number)> int b = (int)a + 2;전역 연산자든 멤버함수 연산자 오버로딩이든 사용자 정의 연산자 정의이기에 클래스를 통해서 이뤄짐int operator(int a, int b) {} // 컴파일러 오류기본 타입에 대한 전역 연산자 오버로딩의 경우 표준 라이브러리 호환성 유지를 위해 오류를 내보냄전역 연산자 오버로딩[반환값]operator[연산자]([인자1], [인자2])인자1 : 왼쪽 피연산자인자2 : 오른쪽 피연산자ex) 반환값 = a(왼쪽 피연산자) + b (오른쪽 피연산자)..
클래스 초기화 클래스 초기화클래스 단일class Knight{public: Knight() { _hp = 100; }...public: int _hp;} 클래스 상속class Player{public Player(int id) { _id = id; }...public: int _id;}class Knight : public Player{public: Knight() : Player(1) // Player 기본생성자(명시적)를 이용하여 초기화 , 암시적으로도 가능 { _hp = 100; } or Knight() : _hp(100), Player(1) // 멤버변수 초기화 {}...pu..
다형성 다형성같은 메서드(멤버함수)가 다른 객체에서는 다르게 동작하는 것을 의미동일한 인터페이스를 통해 서로 다른 구현 가능코드의 유연성 및 확장성 다형성의 종류다형성같은 인터페이스를 통해, 여러가지 다른 형태의 객체를 다룰 수 있게 해주는 특성 오버로딩함수이름은 동일하되 인자를 다르게하여 재정의일반적으로 일반함수 생성에서도 많이 사용되는 기법인자형태에 따라 다르게 함수 호출오버로딩class Player{ void Test() { cout }};class Archer : public Player{ void Test(int hp) // Test() 오버로딩 { _hp = hp; cout }};오버라이딩똑같은 함수이름과 동일한 인..
상속성과 은닉성 상속성 & 은닉성상속을 하는 이유?코드의 재사용성을 줄이기 위해서계층적인 관계를 쉽게 구현하기 위해은닉을 하는 이유?객체의 데이터 및 메소드를 외부로부터 숨기고, 클래스 내부에서만 가능하게 하기 위해데이터의 무결성 유지, 객체의 인터페이스만을 통해 상호 작용안정성을 높이기 위해서접근 제어자 활용 : public / protected / privatepublic : 공용, 외부로 열려있는 접근 제어자protected : 클래스 내부에서 사용, 자식들까지 (연관된 클래스) 사용 가능private : 클래스 내부에서 사용, 자신 혼자만 사용 (상속되지 않음)부모가 자식에게 물려주는 멤버함수 & 멤버변수부모 클래스는 private를 제외한 protected , public을 상속할 수 있음 클래..
1. 클래스2. 생성자3. 소멸자클래스 class Player{public : // 접근지정자 void Test(); // 멤버 함수public : int _hp; // 멤버 변수 int _attack; // 멤버 변수};객체동작 및 데이터를 표현하는 설계도 역할객체의 분류클래스 : 설계도인스턴스(객체) : 클래스를 사용하기 위해 만든 객체 ( 클래스 변수 선언 했다고 생각...)클래스 구성멤버 함수 : 일반적인 함수랑 유사하나, 클래스에 속해 있다는 차이점이 존재멤버 변수 : 해당 클래스 내부에서 사용되는 지역변수와 유사한 변수(지역변수 : 중괄호 or 함수 내부 변수 , 멤버변수 : 해당 클래스 객체 내부에서 사용되는 변..
1. 다중 포인터2. 다차원 배열 다중 포인터[Type] **[포인터이름] = [주소값];void SetMessage(const char* a){ a = "Bye"; // 새롭게 .rdata에 저장된 것을 새롭게 가리키게 됨 cout SetMessage(const char * a)순서포인터stack 영역 값1string .rdata#1영역 Hello2~ SetMessasge() ~ 3a (지역변수).rdata#2영역Bye4main()영역5string.rdata#1영역Hello3번 순서에서, Bye라는 값이 새롭게 stack영역에 저장됨 (해당 값을 a 가 가리키게 됨)따라서, string 포인터의 변화는 존재하지 않게 됨 SetMessageDoublePointer(const char ** a)순서포인터s..
1. 배열 형식 2. 배열 특징 3. 포인터 vs 배열4. 배열 함수 인자 배열 형식[TYPE] [배열이름][개수] // int arr[10];배열의 크기는 상수배열의 크기를 지정해주거나 초기화를 진행하여 사이즈를 알려주어야 함 배열 특징배열의 이름 == 배열의 시작 주소배열은 순차적으로 저장되어있음 (인덱스)배열의 연산 또한 포인터와 유사하게 한칸의 차지하고 있는 바이트만큼 이동포인터와 참조를 이용한 배열의 표현int arr[10] = {}; // 배열의 초기화 ( 모든 인덱스에 해당하는 수를 0으로 초기화 )int& ref = *(arr + 2); // (0, 1, 2, 3...) ->3번째 인덱스로 이동 ref = 10; // arr[2] = 10 과 동일한 표현 배열의..
1. 참조 형식 2. 참조 특징 3. pointer (*) vs reference (&) 참조 형식[TYPE]& [참조 이름]= [참조할 변수];참조(Reference) 또한 포인터와 어셈블리어 연산 과정은 동일하다 (포인터가 주소를 가리키는 부분이 추가 되어있는 것 뿐...)어셈블리어 (값 변경 과정)[Pointer]1. pointer 저장된 주소로 이동 (int *ptr)2. 이동된 주소의 값을 수정 (*ptr = [원하는 값] )[Reference]1. 참조할 변수의 주소를 타고 이동2. 이동된 주소의 값을 수정 (int &ref = [참조할 변수] )3. ref = 10; // 참조할 변수의 값 ..
- Total
- Today
- Yesterday
- BFS
- 깊이우선탐색
- 백준
- SQL
- 클래스
- 오블완
- 코딩테스트
- 정렬
- JSON
- 타입변환
- Spring
- 검증
- 게시판 프로젝트
- 우선순위 큐
- Java
- 알고리즘
- Thymeleaf
- 게시판
- db
- 티스토리챌린지
- DFS
- 포트폴리오
- 예외처리
- 버블정렬
- 기술면접
- 이진탐색
- JDBC
- bean
- HTML5
- stack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |