일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SKT
- 직장인자기계발
- 패스트캠퍼스후기
- AI
- 패스트캠퍼스
- R
- 패캠챌린지
- albert
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online
- 한번에끝내는Java/Spring웹개발마스터초격차패키지
- 직장인인강
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.
- 알버트
- Today
- Total
목록C++ (10)
제주 탈출 일지
코딩 테스트를 한번 보고 string 형 및 문자열에 대한 처리를 잘 못한다는 것을 느꼈다. 내가 찾아보고 정리할까 하다가 , 너무 정리가 잘 되어 있는 글을 봐서 굳이 할 필요가 없다고 느껴졌다. 이거 보면 되지 뭐,, ldgeao99.tistory.com/220
#include 를 통해 사용함. 템플릿 형식 template T는 vector 컨테이너 원소의 형식을 의미한다. 생성자 vector v : 빈 컨테이너 vector v(n) : 기본값으로 초기화된 n개의 원소 vector v(n,x) : x 값으로 초기화 된 n개의 원소 vector v(v2) : v2 컨테이너를 복사한다. vector v(b,e) v는 반복자 구간 [b,e)로 초기화된 원소를 갖는다.(b,e는 iterater) 멤버함수 v.assign(n,x) v에 x값으로 n개의 원소를 할당한다. v.assign(b,e) v에 반복자 구간 [b,e)로 할당한다. v.at(i) v의 i번째 원소를 참조한다(const, 비 const 버전이 있으며 범위 점검을 포함) ->v[i]는 범위점검을 해주지 않..
뇌를 자극하는 C++ STL의 연산자 오버로딩 예제를 공부하면서 느낀게 많아서 정리하려고 한다. 각각의 예제 소스코드를 올려놓았다. #include using namespace std; class Point { int x; int y; public : Point(int _x = 0, int _y = 0) : x(_x), y(_y) {} void Print() const { cout
더미노드가 포함된 양방향 연결리스트를 짜고 싶었는데, 망했다. 이게 오류가 나는데 왜 나는지 도저히 모르겠는차에, 이전에 공부를 위해서 불렀던 C++ 기초 플러스가 와서 그냥 올리고 C++ 기초 플러스를 공부하려고 한다. 나중에 다시 짜면 분명 오류가 보일것,,, DLinkedList.h #ifndef DLINKEDLIST_H #define DLINKEDLIST_H template class List { private: int numOfData; typedef struct Node_ { T data; Node_* next; Node_* prev; }Node; Node* cur; Node* head; public: List() { numOfData = 0; cur = nullptr; head = (Node..
스마트 포인터를 사용하면 메모리 해제와 같은 부분에서 신경을 덜 쓸 수 있고, 단순 포인터를 사용하는 것보다 편리하다고 한다. 아직 잘 모르겠다, .ㅋ 스마트 포인터에는 3가지 종류가 있다. 1. unique_pointer 2. shared_pointer 3. weak_pointer auto_pointer는 unique_pointer를 만드려다 실패한 결과물이라고 한다. 안씀. 일반적으로 스마트 포인터를 사용할 떄는, 1번 unique_pointer를 많이 사용한다고 한다. 선언 unique_ptr 포인터이름 = make_unique("객체에 생성자에 필요한 인수들...")로 선언하면 객체를 하나 생성하고 그 객체를 가리키게 된다. 또 사용이 끝난후에 delete 키워드를 통해 메모리를 해제할 필요가 없..
함수 템플릿은 함수의 다형성을 위해서 존재하는 것이라고 한다. 한번 써보니 너무 편했다,,.,. 간단하게 예시를 한번 작성해보았다. template void sum(T a, T b) { T x = a + b; cout
C++에서는 순수 가상 함수를 한 개 이상 포함하고 있는 클래스를 추상 클래스라고 한다. 순수 가상함수는 동작이 정의되어 있지 않아 파생 클래스엑서 재정의가 필요한 함수이다. virtual 함수선언=0; 형태로 선언된다.(선언은 있으나 본체가 없다.) 추상클래스는 가상 함수를 포함하고 있으므로 인스턴스를 생성할 수 없다. 상속 후에 파생 클래스에서 순수 가상 함수에 대한 오버라이딩을 하고 나서 인스턴스 생성이 가능하다. C++에서 추상 클래스는 다음과 같은 용도로는 사용할 수 없따고 한다. 1. 변수 또는 멤버 변수 2. 함수의 전달되는 인수 타입 3. 함수의 반환 타입 4. 명시적 타입 변환의 타입 아마 인스턴스화 하지 못하기 때문에 위의 용도로 사용하지 못하는 것이 아닌가 추측하고 있다.
오버로드(overload) : 다른 인수를 가지는 함수들을 같은 함수로 정의하는 것. 오버라이딩(overriding) : 이미 정의된 함수를 무시하고 같은 이름의 새로운 함수를 정의하는 것. 오버라이딩은 1. 파생 클래스에서 재정의 2. 가상 함수에서 재정의 두 가지로 나뉜다고 한다. 1. 파생 클래스 재정의 class Person { private: string name_; int age_; public: Person(const string& name, int age); // 기초 클래스 생성자의 선언 void ShowPersonInfo(); }; class Student : public Person { private: int student_id_; public: Student(int sid, cons..

상속(inheritance) 상속은 사용자에게 코드의 재활용성 및 클래스 간의 계층적 관계를 제공하여 객체 지향 프로그래밍을 가능하게 한다. 상속한 클래스를 부모 클래스, 기초 클래스, 상위 클래스라고 하며 상속받은 클래스를 파생 클래스라고 합니다. 선언은 다음과 같이 이루어진다. class 파생클래스이름 : 접근제어지시자 기초클래스이름[, 접근제어지시자 기초클래스이름, ...] { // 파생 클래스 멤버 리스트 } class rectangle : protected square { private : int y_ public : } 이런 느낌으로 정의하면 될 듯하다. 접근 제어 지시지를 생략할 경우 private로 자동 선언 된다. 또한 파생 클래스는 상위 클래스의 private 멤버를 접근할 수 없으므로..
C++에서, 객체의 멤버를 접근하기 위해서 public의 함수를 통해서 접근하는 것이 일반적이다. 프렌드 제어 키워드는 객체 바깥의 함수같은 경우도 멤버에 접근해야 하는 경우가 필요하다. 이 프렌드 키워드를 통해 지정한 객체의 멤버에 접근할 수 있는 권한을 부여해줄 수 있다. 선언 방식은 다음과 같다. friend 클래스이름 함수이름(매개변수목록); // 함수에 원형에서만 사용. + 프렌드 선언은 아무곳이나 해도 상관없다(public, private, protected) 해당 프렌드 선언은 객체지향에서의 '정보 은닉'을 깨버리기 때문에 특별한 경우가 아닐경우 지양하여야 한다. *일반적으로 클래스 관련 이항 연산자를 오버로딩할 때 프렌드의 필요성이 자주 발생한다. 예시는 http://tcpschool.co..