programming/cpp

    [C++] Class Relationship

    Class Relationship1. has ~ a (Data와 관리 class) -> ''문법적으로 포함 오브젝트(embedded object)''를 쓴다 2. is ~ a (상속 구조) -> ''문법적으로 상속 VS 06 Program 04. Has-a 관계로 구현한 기본 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include #include using namespace std; class PersonName { string name;public: void setName(string name) { this->name = name; } string getName() const { re..

    [C++] static, const

    (review) 클래스 안에 디폴트로 존재하는 것들 같은 메모리를 참조하는 현상이 만들어져서런타임 에러가 뜬다 내가 어떤 포인터를 만들지 모르기 때문에깊은 볷사로 해줘야 한다 동적 바인딩 : 부모의 레퍼런스로 자식에게 접근하는 방식- 자바는 100% 상속 구조 -> 부모가 자식에게 접근할 수 있다- 다형성 중 하나- CPP은 자바는 자동화를 했기 때문에 신경안써도 되지만, 일일이 신경써줘야 한다- 어디까지 쓸 수 있다? 부모 걸 오버라이딩 한 거랑 상속받은 것만 쓸 수 있다내부적으로 인식이 안된다 -> 그래서 해결 방법이 가상 함수!* 기본원리정적, 동적 바인딩은 가상 함수가 꼭 필요하다; 마찬가지로 소멸자도 반드시 필요하다정적으로 쓸 건지 동적으로 쓸 건지는 사용자 마음! -> 클래스를 만들 때 우리가..

    this

    * (review) this 정의 : 자기 자신을 가리키는 객체 포인터어디에 있나? 함수의 매개변수 첫번째로 항상 존재한다!인스턴스 함수 : 컴파일 타임에 만들어지는 함수왜 존재하나? 객체를 구별하기 위해서 * 스태틱 메소드에서는 인스턴스 필드값을 쓸 수 없다근데 난 aa=10넣고 싶으면 this의 역할을 똑같이 코딩해주면 된다 스태틱 메소드의 실행 시기는? 시작할 때 미리 만들어진다 * 스태틱의 궁긍적인 목표 : 공유* 스태틱은 this가 없다 class A {int a; setA(int a) getA()};void setA(int a){a = a;} void main(){A aa;aa.setA(10);aa.setA(aa, 10);} this를 명시적으로 해야 하는 경우1. 필드명과 지역변수가 같을 때..

    [C++] Class : 절차지향을 넘어 객체지향으로!

    여러 사람이 모여서 하나를 완성해야 하는 시대가 왔다.대표적으로 모듈화 절차지향은 한 사람 기준이었지만, 객체지향은 여러 사람 기준 '사람이 정의한' 현실 세계에 존재하는 모든 것은 객체로 정의하자! OOP에서 가장 중요한 것 : 확장성, 유지보수성 Class A { member variable; // == field constructor function + in Cpp복사 생성자 함수소멸자대입연산자 함수 member function; // == method }; # 생성자, 복사생성자, 소멸자, 대입 연산자는 디폴트로 설정되어있다 # 클래스 밖에 있는 함수를 외부 함수로 칭한다! main도 외부 함수다! #CPP에서도 접근 지정자가 있다 (자바는 여기에 default를 추가해서 4개다)캡슐화를 파괴하는..

    [C++] Overloading

    Overloading매개변수의 개수나 타입이 달라야만 쓸 수 있다. 같은 기능에 맞게 묶어라!오버로딩의 목적에 맞는 것만 사용해라! C++에는 크게 2가지 오버로딩이 있다.① Explicit Overloading(명시적 오버로딩) (자바에서 배운것) ② implicit Overloading(암시적 오버로딩) (코딩은 1개인데 함수는 여러개다) ==> 디폴트 인자값을 말한다 암시적 오버로딩을 알려면 디폴트 인자값을 알아야 한다! Default Argument (디폴트 인자) 매개변수 초기값을 준 개수 + 1 만큼있다 void disp(int a = 10, int b = 20) // 니가 안주면 내가 기본값을 줄거야라는 뜻{ } C++에서는 매개변수에서 값을 넣을 수 있다 ==> 디폴트 인자값'내가 어떤 값..

    성적처리프로그램

    case 1 : structure를 이용 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283#include using namespace std; typedef struct _student { char name[10]; int kor, eng, math; int total; float avg;} Student; void MemAlloc(Student **p, int cnt){ *p = new Student[cnt]; cout total / 3.f; } cout

    [C++] setw()

    C++에 들어오면서 printf로 출력 서식을 조정할 필요가 없다. 하지만 %2d 같이 세밀한 조정을 할 수 없게 됐는데, 대신 다른 방법을 제공하고 있다. 바로 setw()라는 C++ 함수이다. l setw() 함수의 특징 1. C++ 함수이다. 2. #include 에 있다. (cf. Input Output Manipulator, 입출력 조정자) 3. 출력하는 데이터의 칸을 지정한 수 만큼 정렬해준다. l 연관 내용(incomplete) 1. 한번에 하나만 가능하다. 2. 대상 앞에 setw() 한다. 3. setfill()은 공백 대신 빈칸을 사용자가 지정할 수 있는 함수. 한번 설정하면 계속 유지된다. 4. Setbase()로 8진수, 10진수, 16진수 입맛대로 진법을 설정할 수 있다. 5. S..

    [C++] Pointer

    Definition of Pointer : 주소를 저장하는 변수 Pointer = point + ~er (지시자)Point == address4byte -> 주소를 저장하는 변수기능 4가지1234 모양꼴 가리키는 타입 *변수명; cf. 함수는 코드영역에 잡힌다그 이름을 알아야 호출을 할 수 있다 ㆍ 주소 1. &변수명 2. 배열명 3. 함수명 4. 문자열 5. 포인터 #4. 문자열C++에서는 헤더파일 하면 String 클래스를 쓰는 거다#include : 문자열 관련 함수들이 모여있는 함수 라이브러리 근데 C에서 썼던 String 헤더파일을 쓰고싶다그럴 땐 #include 을 붙여라! #include 는 클래스를 갖다쓰는거고#include 함수를 갖다쓰는 거다! Facilities of Pointer포인..

    [C++] Array

    Array int a[요소 개수]; 선언한 이후에는 '위치'가 된다 cf. in Java : int []a = new int[100];자바의 레퍼런스 타입은 힙이라는 메모리 공간을 쓴다 (array, object) C++은 본인이 Heap으로 잡을 수도, Stack으로 잡을 수도 있다! int a = 10;char b = 'a';float c = 2.4f; printf("%d %c %f \n", a, b, c); in C => cout b >> c; c++에서는 실수형 뒤에 0이나오면 절삭해버린다 차이점\n은 버퍼해주진 않는다endl은 버퍼를 비워준다 C++에서의 레퍼런스 == 닉네임기능은 포인터처럼 쓸 수 있다문법적으로는 코딩은 call by value기능적으로는 call by address 즉, 별표..

    [C++] Welcome to C++ Programming

    What is C++? : C++ // C = C + 객체지향(Object-Oriented Programming, OOP); C++는 C 언어를 개발한 AT&T Bell 연구소의 Bjarne Stroustrup에 의해서 개발되었다. C++은 C 언어가 갖는 간결성과 속도를 그대로 지니면서 OOP을 지원하는 언어로 만들어졌다.그래서 C++ 객체 지향 언어의 프로그래밍 방법은 인간의 사고 방법에 바탕을 둔 클래스, 상속, 다형성 등과 같은 요소를 충분히 활용해야 한다. c -> c++(절차지향과 객체지향의 중간언어) -> MS(API -> MFC -> C# -> Java(complete OOP) Java - web ㄴ mobile(Android) i - Phone - Object C What is an Ob..