수강한 개념
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기 학습 기록으로 작성되었습니다.
'교육관련 > 한화비전 VEDA 수강일지' 카테고리의 다른 글
[VEDA 1기 수강일지] 10일차 - C++ 기초 (3) : 오버로딩, static, 상속 (0) | 2024.07.26 |
---|---|
[VEDA 1기 수강일지] 9일차 - C++ 기초 (2) : 포인터, 참조 (0) | 2024.07.25 |
[VEDA 1기 수강일지] 7일차 - C언어 (임베디드/리눅스) (2) (0) | 2024.07.23 |
[VEDA 1기 수강일지] 6일차 - C언어 (임베디드/리눅스) (1) (0) | 2024.07.22 |
[VEDA 1기 수강일지] 5일차 - C언어 기초 (5) : 파일입출력, 전처리, 비트연산, volatile (0) | 2024.07.19 |
댓글