본문 바로가기
교육관련/한화비전 VEDA 수강일지

[VEDA 1기 수강일지] 8일차 - C++ 기초 (1) : 입출력, 클래스

by 김수효 2024. 7. 24.
수강한 개념

 

C++ 입출력

- <iostream>

- cin, cout : 입출력 데이터 형식을 지정하지 않음

ㄴ 버퍼 동기화 때문에 printf, scanf보다 2배 가량 느림

ㄴ 코테시 참고 : ios_base::sync_with_stdio(false);

 

rand()

ㄴ 헤더파일 필요 : <time.h>, <cstdlib>

ㄴ srand() : 반복문 안에 사용 x. 생성자에 한번만 넣어주면 된다.

Random::Random()
{
	srand(time(NULL));
}

int Random::next()
{
	int temp = 0;
	temp = rand();
	return temp;
}

 

클래스

- 구조체와 거의 비슷함

- 캡슐화

- 접근 지정자 (private, public, protected)

- typedef 안쓰는 구조체 느낌...

 

생성자

- 생성시 1번

- 컴파일러가 기본생성

- 초기화 목적

- 생성자 함수가 하나이상 있다면 기본 생성자 함수는 자동으로 생성되지 않음

-전역 객체부터 생성 -> main 객체 생성 -> 지역 객체 생성 (소멸은 반대로)

 

소멸자

- 객체가 소멸될 대 자동으로 호출되는 함수

- 중복 생성 불가

- 메모리 해제 등에 사용

- 가장 최근 생성한것 순서로 순차적으로 소멸 (스택공간에서 객체들을 소멸시키기 때문)

 

inline 함수

- 컴파일러가 inline부분을 매크로처럼 호출해서 변경함

ㄴ동작은 매크로와 비슷, 타입체크, 매개변수같은 매크로의 단점을 보완

- 비교적 짧은 코드에 한해서 작동 (반복문, goto문 등 작동 x)

- 실행시간 빨라짐 but 코드 길어진다.

- 대표적으로 생성자 함수 (자동 인라인 함수 : 컴파일러가 자동으로 판단해서 인라인 함수 처리)

 

C++ 구조체

- 클래스와 거의 동일

- 구조체는 기본이 public 

 

문제 구현 / 개선방안

 

1. class 실습

- substr 공부

#ifndef _CIRCLE_H
#define _CIRCLE_H
#endif

class Date
{
public:
	int year;
	int month;
	int day;
	Date();
	Date(int y, int m, int d);
	Date(std::string s);
	int getYear();
	int getMonth();
	int getDay();
	void show();
};

 

#include <iostream>
#include <string>
#include "Date.h"

using namespace std;

int main()
{
	Date  birth(2014, 3, 20);
	Date independenceDay("1945/8/15");
	independenceDay.show();
	cout << birth.getYear() << ',' << birth.getMonth() << ',' << birth.getDay() << endl;
}

 

#include <iostream>
#include <string>
#include "Date.h"

using namespace std;

Date::Date() : Date(1000, 1, 1) {}

Date::Date(int y, int m, int d)
{
	year = y;
	month = m;
	day = d;
}

Date::Date(string s)
{
	int index1 = s.find("/");
	string y= s.substr(0, index1);
	int index2 = s.find("/", index1+1);
	string m = s.substr(index1+1, index2-index1-1);
	string d = s.substr(index2 + 1, s.length());
	year = stoi(y);
	month = stoi(m);
	day = stoi(d);
}


int Date::getYear()
{
	return year;
}

int Date::getMonth()
{
	return month;
}

int Date::getDay()
{
	return day;
}

void Date::show()
{
	cout << year << "년 " << month << "월 " << day << "일" << endl;
}

 

기타 사항

 

헤더파일이랑 함수 선언부에 namespace 명시해주는거 자꾸 잊어서 오류남.

 


VEDA 바로가기 : www.vedacademy.co.kr

VEDA(한화비전 아카데미) 영상으로 확인하기 : https://url.kr/zy9afd

본 후기는 VEDA(한화비전 아카데미) 1기 학습 기록으로 작성되었습니다.

댓글