본문 바로가기

Programming/C++35

C++ 마지막 종합 실습! n명이하는 한글 끝말잇기 게임을 작성해보자. 선수의 수를 입력받고 선수 각 사람의 이름을 입력받아 시작한다. ​ 출력형태 게임에 참가하는 인원은 몇명입니까? 3 참가자 이름을 입력하세요. 빈칸없이 >> 이순신 참가자 이름을 입력하세요. 빈칸없이 >> 장영실 참가자 이름을 입력하세요. 빈칸없이 >> 윤봉길 시작하는 단어는 아버지 입니다. 이순신>>지우개 장영실>>개나리 윤봉길>>리본 이순신>>본죽 장영실>>주리 장영실이 패 하였습니다. ​ player 클래스 : 선수를 표현하는 클래스, 1) 이름 변수와 두 문자열을 받아 비교하여 성공여부를 반환해주는 함수로 구성되어있다. main() 함수 : 게임에 참가하는 player를 동적할당받아 1) 각각의 선수 이름을 입력받아 이름을 설정하고 2) 끝말잇기 문자열.. 2021. 4. 23.
C++ 입출력스트림 ex01) 파일 새로 저장 #include #include using namespace std; int main() { ofstream fout; //객체 생성 fout.open("song.txt"); //open 함수 제공 if (!fout) { fout 2021. 4. 23.
C++ 상속 - 업캐스팅, 다운캐스팅, protected 접근지정자 상속 기본 클래스의 속성과 기능을 파생 클래스에 물려주는 것 가장근접한 클래스를 가져오는것 기본클래스: 상속해주는 클래스, 부모 클래스 파생 클래스: 상속받는 클래스, 자식 클래스 1) 상속 정의시 class 클래스이름 : public(접근지정자(기본 private)) 물려받은 클래스이름 - 접근지정자는 public으로 가져올 시 public으로 지정된 것들만 가져올 수 있다 그것 보다 좁은 private는 가져올 수 없다. 하지만 private로 접근지정자를 설정하면 기본 클래스를 모두 private로 가져올 수 있다. 2) 상속의 목적 1. 간결한 클래스 작성 2. 클래스간의 계층적 분류 및 관리의 용이함 3. 클래스 재사용과 확장을 통한 소프트웨어 생산성 향상 업캐스팅 파생클래스 포인터가 기본클래스.. 2021. 4. 21.
C++ static Static 객체를 많이 만들어도 1개 객체 이름으로 많이 만드는건 의미가 없고 공간만 낭비할 것 같을떄 사용 클래스이름::static변수 or 함수 ex 1) #include using namespace std; class Circle { private: static int numOfCircles; int radius; public: Circle(int r = 1); //디폴트 생성자 ~Circle() { numOfCircles--; } //소멸될때 마다 -1씩 double getArea() { return 3.14 * radius * radius;} static int getNumOfCircles() { return numOfCircles; } }; Circle::Circle(int r) { radi.. 2021. 4. 21.
C++ 얕은복사 깊은복사 얕은 복사(Shallow Copy) 얕은 복사는 객체가 가진 멤버들의 값을 새로운 객체로 복사하는데 만약 객체가 참조타입의 멤버를 가지고 있다면 참조값만 복사가 됩니다. 깊은 복사 (Deep Copy) 깊은 복사는 전체 복사라고도 합니다. 얕은 복사와는 달리 객체가 가진 모든 멤버(값과 참조형식 모두)를 복사하는 것을 말합니다. 객체가 참조 타입의 멤버를 포함할 경우 참조값의 복사가 아닌 참조된 객체 자체가 복사되는 것을 깊은 복사라 합니다 ※ 얕은복사 깊은복사 총정리 얕은 복사의 경우 동적 할당을 받은 변수의 주소값을 공유한다. 깊은 복사의 경우에는 새로이 동적 할당은 받고, 원본의 데이터까지 복사를 한다. 복사생성자 객체의 복사가 이루어질 때 호출되는 생성자이다. 클래스 내에서 일반 생성자는 파라미터.. 2021. 4. 21.
C++ 참조자 참조자(공간) - 이미 존재하는 변수에 대한 다름 이름을 선언 - 포인터 변수로 하면 접근성이 떨어져서 참조자로 사용 - 선언시에 쓰는 것은 주소가 아닌 참조자 - 참조변수는 이름만 생기며 - 참조변수에 새로운 공간을 할당하지 않는다. - 초기화로 지정된 기존변수를 공유한다. - 공간을 같이 쓴다. 주의사항 1. 참조자의 타입은 대상이 되는 변수의 타입과 일치해야 합니다. 2. 참조자는 선언과 동시에 초기화되어야 합니다. 3. 참조자는 한 번 초기화되면, 참조하는 대상을 변경할 수 없습니다. ex 1) #include using namespace std; char& find(char s[], int index) { return s[index]; } int main() { char name[] = "Mik.. 2021. 4. 20.