C++언어 공부 16

2024.02.06 C++ 최종 실습 [다시 꼭 볼 필요가 있다. (벡터 사용)]

#include #include #include using namespace std; // 회원가입할 때에 필수 정보들 (Model) class User { private: string id; string pw; string name; int age; public: // 기본 생성자 User() { ; } // 초기 생성자 User(string id, string pw, string name, int age) : id(id), pw(pw), name(name), age(age) { ; } // getter (반환) string getId() { return id; } string getPw() { return pw; } // setter (수정) void setPw(string pw) { this->pw..

2024.02.06 C++ 언어 공부 10일 차 (학원 방특 끝, vector)

vector : 배열과 비슷한 자료구조이다. 일반 배열과 차이점이라면, 동적으로 크기가 변하기 때문에 객체의 추가와 삭제가 자유롭다. 벡터를 사용하기 전에는 #include 을 해주어야 한다. .size() : 벡터의 크기값 리턴 .push_back() : 괄호 안에 있는 값을 제일 뒤에 추가 .erase() : 괄호 안에 있는 순번의 값을 삭제 .resize() : 괄호 안에 있는 값만큼 벡터 크기를 조절 (조정) .clear() : 비우기

2024.02.05 C++ 언어 공부 9일 차 (template(2), 매크로 & 인라인 함수)

맨 처음 실습을 하는 데에 이해를 제대로 하지 못하여 코드를 이렇게 짰었다. 끝까지 이 방식으로 해보려 했으나, 다음에 시간이 좀 여유가 된다면 찾아서 해봐야겠다. 오랜시간이 걸려 해보려 했으나 되지 않았다 ... 짜증 ... 참고 사이트 : https://codechacha.com/ko/cpp-join-two-arrays/ [C++] 두 배열을 하나의 배열로 합치기 2개의 배열의 모든 요소를 하나의 배열에 합치는 방법을 소개합니다. 기본적인 접근 방법으로, 두 배열의 모든 요소 개수 크기의 배열을 생성합니다. 그리고 두 배열의 요소들을 새로 생성한 배 codechacha.com const & 사용 이유? T& : 전달된 인자를 참조로 받기 위해 사용한다. 복사를 하는 대신 참조를 통해 원본 객체에 직접..

2024.02.05 C++ 언어 공부 9일 차 (template (1))

템플릿 함수나 클래스를 매개변수의 타입에 맞게 새로 작성하지 않더라도 동작할 수 있게 한다. 템플릿의 종류는 함수 템플릿과 클래스 템플릿 두 가지가 있다. template 설명 template는 위의 상황처럼 여러 자료형에 대해 같은 기능을 하는 함수 혹은 클래스에 사용된다. 한마디로, 자료형을 일단 정해두지 않은 채로 우선 작성 후, 나중에 입력되는 자료형에 따라 작동할 수 있다. template 사용방법 사용 방법은 원하는 함수나 클래스 위에 템플릿을 사용할 것을 적어두면 된다. template 혹은 template (뒤에 세미콜론은 붙이지 않는다) 만약 사용하고 싶은 자료형이 여러 개일 경우, 여러 개를 적어두면 된다. template T라는 이름을 사용하는 것이 일반적이지만, 원한다면 마음대로 사..

2024.02.02 C++ 언어 공부 8일 차 (exception)

강사님께서 모르는 것들은 사이트를 많이 참고하라고 하셨다. 참고 사이트 : C++ 언어 참조 | Microsoft Learn C++ 언어 참조 자세한 정보: C++ 언어 참조 learn.microsoft.com exception에 대해 배워보자. 간단히 소개하자면, C++에서의 예외처리이다. 프로그램에서 예외란 문법적인 오류가 아닌 처리가 동작을 하며 의도하지 않은 방향으로 흘러가 시스템이 멈추는 오류를 뜻한다. 소스를 작성할 때 어느 정도 동작을 예상하고 테스트를 하며 만든다. 하지만 예상하지 못한 동작을 해 생각하지 못한 값이 들어오는 경우 다른 결과를 내기도 하지만, 결과조차 내지 못하고 시스템이 멈추는 경우가 생겨버린다. 시스템이 멈춰버리거나 갑자기 종료가 된다면 사용자는 오류가 있어서 시스템이 ..

2024.02.02 C++ 언어 공부 8일 차 (오퍼레이터)

operator overloading : 하나의 연산자를 여러 의미로 사용할 수 있게 하는 것이다. C++ 에서는 연산자 오버로딩을 사용자 정의 타입까지 확장할 수 있으며, 클래스도 하나의 타입임을 확실히 보여준다. operator function (연산자 함수) : C++ 에서는 연산자를 오버로딩하기 위해서 연산자 함수라는 것을 사용한다. 연산자 함수는 operator 키워드를 사용하여 연산자를 오버로딩한다. 오버로딩할 연산자는 적법한 C++ 연산자이며, operator 키워드와 공백 없이 연결되어 표시해야 한다. (직접 해보니 공백 ? 상관 없는 거 같은데 ...) 오버로딩 제약 사항 전혀 새로운 연산자를 정의할 수 없다. (원래 있던 연산자) 기본 타입을 다루는 연산자의 의미는 재정의할 수 없으며,..

2024.02.01 C++ 언어 공부 7일 차 (프렌드)

프렌드 (friend) 정보를 은폐하면 객체의 신뢰성이 높아지고 기능 개선도 용이한 것은 분명하다. 하지만 불편한 점도 있다. C++의 액세스 지정자는 매우 엄격하기 때문에, 정상적인 문법으로는 외부에서 멤버를 참조할 수 없다. 하지만, 어떤 경우에는 이런 정보 은폐 기능이 방해가 될 수도 있기 때문에 예외적으로 지정한 대상에 대해서는 모든 멤버를 공개할 수 있는데, 이를 프렌드 지정이라고 한다. 프렌트의 특징 (프렌드 클래스 관한 특징) 프렌드 지정은 단방향이며 명시적으로 지정한 대상만 프렌드가 된다. 클래스 A 클래스 B friend class B; 클래스B는 클래스A에 엑세스가 가능하다. B는 A의 모든 멤버를 엑세스할 수 있다. A는 그렇지 않다. 자유롭게 사용하고 싶다면 양쪽 모두에 friend..

2024.02.01 C++ 언어 (인터페이스, 상속 실습)

인터페이스 관련 실습 [실습] 1. 함수는 전부 다 void로 만들고 cout 써서 간단하게 출력만 하도록 구현하여라 1.1 IAnimalAction 인터페이스 선언 - 접근 제어자 : public - bark() - eat() - giveHand() - sleep() 1.2 AnimalInfo 클래스 선언 - 접근 제어자 : public - 멤버 변수 string name, int age, string feed 3. 원하는 동물로 클래스 만들고, 1, 2 인터페이스와 클래스를 다중 상속 받아 재정의도 하고 생성자도 만들어보고 등등 메인 함수에서 충분히 테스트해보기 ※ 상속받는 자식 클래스 내에서 부모 클래스의 기본 생성자(?)를 적어 주어야 한다! 생성자 개념은 다시 공부하자 ㅠㅠ 상속 인터페이스 물론..

2024.01.31 C++ 언어 공부 6일 차 (동적 바인딩, 가상 함수, 인터페이스)

가상 함수 (virtual function) 부모 클래스의 메소드에 virtual을 붙이게 되면 가상 함수가 되면서, 부모 포인터로 업캐스팅 했을 시, 오버라이딩(재정의) 된 함수를 사용하게 해주는 방법이다. ※ 가상 함수가 존재하는 경우, 소멸자에도 virtual 키워드를 추가해줘야 자식 클래스의 소멸자가 호출된다. 이 작업을 하지 않는다면 자식 클래스의 소멸자가 호출되지 않는다. 가상 함수 추가! 가상 함수는 자식 클래스가 재정의할 수 있는 함수이다. 만약 상속 관계가 아니라면 가상 함수를 선언할 필요가 없으므로 가상 함수는 상속 계층내에서만 의미가 있으며 자식 클래스에게 재정의 기회를 주기 위해 존재하는 것이라고 할 수 있다. 그러나 가상 함수를 반드시 재정의해야만 하는 것은 아니다. 부모 클래스의..