C++언어 공부 16

2024.01.30 C++ 언어 공부 5일 차 (상속 관련)

주석처리 안에 한 것처럼 하게 될 경우, 소멸자 호출이 6번 일어난다. 소멸자 3번만 호출하도록, 바로 배열 안에 객체를 만든 것이다. 클래스 타입의 배열은 소멸자가 객체별로 따로 호출이 되어야 하기에 delete 를 아래와 같이 사용할 수 없다. ▶delete[] students; 소멸자 호출을 for문을 통해 일일이 해줘야 한다! 상속 이미 정의되어 있는 클래스의 모든 특성을 물려 받아 새로운 클래스를 작성하는 기법이다. 자식 클래스의 객체가 생성될 때, 자식의 멤버 변수 및 메소드 뿐만 아니라 부모 클래스의 멤버도 포함한다. 상속을 설명하자면, 공통된 기능을 부모 클래스로 만든 후에, 자식 클래스는 각자 객체마다 가지고 있는 특정 기능을 각각 넣어준 것이다. 예시를 들어, 사람이란 클래스와 학생이란..

2024.01.29 C++ 언어 공부 4일 차

오늘 학원 수업에서는 [ 클래스 ] 에 대해 실습을 먼저 해보았다. 문제는 이렇게 대강 주어졌는데 내가 이해한 것과 풀이를 보고나서 정답 풀이랑은 조금 달랐다. ※ 기본 생성자를 통해 입력을 받기 전, 안에 들어갈 값이 무엇인지 모르기 때문에 공간만 할당해준 것이고 그 아래에 초기 생성자를 통해 입력받은 값을 넣어주기! (동적할당 개념과는 다른 개념이다.) >>> 추가적 공부가 필요함 ㅠ__ㅠ 참고 자료 : [C++ 기본 공부정리] 14-4. OOP - 생성자(constructor) (tistory.com) [C++ 기본 공부정리] 14-4. OOP - 생성자(constructor) 공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 1. 생성자(c..

2024.01.28 C++ 추가 공부 [얕은 복사, 깊은 복사]

깊은 복사와 얕은 복사 객체는 다른 객체를 참조할 수 있는데 이럴 경우에 깊은 복사인가, 얕은 복사인가에 따라 결과값이 달라질 수 있으니 주의해야 한다. 복사를 한다는 것은 기존 객체와 같은 값은 가진 새로운 객체로 만드는 것이다. ※ 근데! 객체들은 멤버를 가지고 있고 그 멤버들은 값일 수도 있고, 참조 형식일 수도 있다. [ 참고 ] 모든 데이터 타입은 값 타입(value type) 또는 참조 타입(reference type)을 가진다. 값 타입(Value type) : 각각의 고유의 메모리를 소유한다. 스위프트에서 struct, enum, array, tuples 들이 해당 타입에 속한다. 참조 타입(Reference type) : 생성된 인스턴스들은 주소값을 공유한다. 스위프트에서 class가 해..

2024.01.26 C++ 언어 공부 3일 차

★ cin.ignore(); 개행 문자가 남아있기에 버퍼를 비워주도록 하자. 특정 객체를 읽으려고 했지만 못 읽을 때, 건너뛰고 싶을 때 사용한다. 파일 끝에 도달하거나 지정한 수만큼 문자를 버리면 멈춘다. cin.ignore(); : 문자 1개를 버린다. cin.ignore(10); : 문자 10개를 버린다. cin.ignore(10, '\n'); : 문자 10개를 버린다. 단, 그 전에 뉴라인(new line) 문자를 버리면 곧바로 멈춘다. cin.ignore(LLONG_MAX, '\n'); : 최대 문자 수를 버린다. 단, 그전에 뉴라인 문자를 버리면 곧바로 멈춘다. cin 과 getline 을 같이 사용할 때 cin.ignore()이 필요한 이유 제대로된 이해 cin은 '\n'를 변수에 담지 않는..

2024.01.25 C++ 언어 공부 2일 차

namespace (C++에만 있는 문법) 프로그램에서 자주 사용하는 명칭이 있다면 using 키워드를 먼저 선언한 후 생략하는 것이 좋다. namespace는 C++의 각종 요소들(변수, 함수, 클래스 등등)을 한 범주로 묶어주기 위한 문법이다. [포인터 개념 간략하게] 포인터 → 주소 int age = 22; 라고 선언하면 RAM안에 age라는 변수 안에 22가 담긴다. int* ptr = &age; 라고 선언하면 age변수의 주소지가 ptr에 담긴다. ※ ptr에 다른변수 num을 넣으면 주소지가 수정될 수 있다. 포인터 또한 주소를 담는 변수이기 때문이다. new, delete (C개념으로 따지면, '동적할당 및 해제') C의 malloc, free 에 대응되는 C++의 메모리 할당 연산자. 프로..

2024.01.24 C++ 언어 공부 1일 차

Visual Studio 2022 다운로드 설치 파일 -> C++ 을 사용한 데스크톱 개발 체크 -> 설치 시작 C++ 언어? 덴마크의 컴퓨터 과학자 비야네 스트로스트룹(Bjarne Stroustrup)가 C언어를 바탕으로 만들었다. 1979년에 C언어에서 직접적으로 파생된 C with Classes라는 이름의 언어로 시작되었다가, 1983년에 지금의 이름을 갖게 되었다. 그리고 객체지향 및 일반화 프로그래밍과 같은 멀티 패러다임을 지원하는 프로그래밍 언어 이다. C언어에서 ++라는 것은 원래 값에 1을 더해서 대입하라는 뜻이다. C는 B 언어를 계승한다는 의미에서 C가 되었는데 왜 D가 아니라 C++가 되었냐 하면, C 언어를 거의 그대로 두고 필요한 만큼만 향상시켰기 때문이라고 한다. [출처] C++..