노력과 삽질 퇴적물
객체지향 프로그래밍(OOP) = 캡슐화 + 다형성 + 상속 부모클래스{부모_클래스멤버} class parentClass { public: ...부모형질_가...; private: ...부모형질_나...; protected: ...부모형질_다...;}; 자식_클래스 : 엑세스_지정자 부모_클래스{ 자식_클래스멤버} class childClass : 액세스_지정자 parentClass { public: ...신규형질_A...; private: ...신규형질_B...; protected: ...신규형질_C...;}; ↓↓↓ (상속처리. 여기선 public으로 예) ↓↓↓ //실제로 구동되는 형태 class childClass : public parentClass { public: ...부모형질_가...; //..
class human { public: // 1. 선언: 생성자() & 소멸자() human(); // 생성자: 인자X 버전 human(int a ...); // 생성자: 인자O 버전 ...; ~human(); // 소멸자 }; // 2. 구현&정의: 생성자() & 소멸자() human::human() { ...; } human::human(int a) { ...; } human::~human() { ...; } int main() { human object1; // 3. 호출: 생성자(인자X버전) human object2(...); // 생성자(인자O버전) } 생성자? 소멸자? => 클래스와 동명인 특수 함수. 클래스명() => 사용법: (클래스내) 선언 - 구현 및 정의 - 개체생성으로 생성자 호출 ..
객체지향 프로그래밍(OOP) = 캡슐화 + 다형성 + 상속 다형성? => 클래스내 함수들 이름이 같아도 반환타입이나 입력_인수가 다르면, 함수들의 동작은 각각 다르다. ex. int printSum (int a, int b); float printSum (float a, float b); void printSum (int n); void printfSum (); 1. 오버로드 -> 함수명은 같아도, 반환값이나 인수값(매개변수)의 자료형이 다르다. [동명이형] -> 입력되는값을 거의 자동으로 인수값이 맞는 함수에 넣음. -> 오버라이드와는 다르다. 오버라이드는 상위 클래스 메소드(함수)를 하위 클래스에서 재정의 하는것. #include using namespace std; int function(int n..
객체지향 프로그래밍(OOP) = 캡슐화 + 다형성 + 상속 캡슐화? => 정보은닉으로 프로그램의 보안성 높일수있다.=> '은닉화'로도 불린다. => CPP, JAVA등에서 3개의 접근 지정자(액세스 지정자)로 접근성 제어 가능. [public, private, protected] => 참고로, 구조체&공용체 기본 접근 지정자 = public 클래스 기본 접근 지정자 = private 은폐성 有 => public 멤버함수() == 인터페이스. 해수면밖 빙산 private 멤버함수() == 내부기능. 해수면속 빙산
정적변수 동적변수 * 지역변수에 사용시, 글로벌변수급의 scope발생. static float loc_val = 10; * 필요에 맞게 메모리의 점유&삭제로 메모리 관리에 적합. int size = 5; int *pVal_1 = new int; //동적변수1. int *pVal_2 = new int[siz]; //동적변수2. 동적배열 확보. char *pVal_3 = new string ("문자열개체 구축+초기화"); delete pVal_1; //동적변수 삭제1. delete [] pVal_2;//동적변수 삭제2. 동적배열 삭제 delete pVal_3; * 지역변수명과 전역변수명이 같다? [::전역변수명]으로 표기&구별가능. * 클래스에도 활용이 가능(동적 객체 변수) className *pObjec..
구조체 //struct 태그명 struct tag_name { //구조체 멤버 선언만. 구조체내 초기값 설정불가 자료형 변수명1; 자료형 변수명2; ...; }; tag_name 변수명; //멤버; ptr_ps->foot = 260; ptr_ps->run_50m_speed = 10.2; strcpy(ptr_ps->anguage, "Korean"); strcpy(ptr_ps->eyes, "brown"); strcpy(ptr_ps->skin, "yellow"); strcpy(ptr_ps->country, "Korea"); * typdef로 구조체명(태그명) 재정의 방법1. 방법2. //struct 태그명 typedef struct human { //구조체 멤버 선언 ...; ...; }new_태그명; //s..
포인터. ① 일반 포인터 &일반_변수명 = 일반_변수명; *포인터_변수명 = &일반_변수명; 일반_변수명 == *포인터_변수명 == 내용물&일반_변수명 == 포인터_변수명 == 주소값 주소값 참조값 &arr[row][col] arr[row] + col *arr + n //[*]는 간접연산자 //n = row + col *(arr[row] + col) *(*arr + n) *(*(arr + row) + col) (*(arr + row))[col] //n = row + col ② 구조체 포인터 구조체 참조 인수 구조체 포인터 인수 반환타입 함수명(구조체명 &태그명) { ... 태그명.멤버1; 태그명.멤버2; ... } 반환타입 함수명(구조체명 *태그명) { ... 태그명->멤버1; //화살표 연산자 태그명-..