생성일: 2022년 11월 29일 오후 11:08
최종 편집 일시: 2022년 12월 6일 오후 9:17
태그: cpp
cpp notion
notion links
new 와 delete 를 사용한 동적할당을 접하고 정적할당과 정적할당의 소멸자가 불러오는 시점을 확인 할 수 있다.
new[] 와 delete[] 를 사용하여 배열 동적할당을 접한다.
pointer포인터와 reference참조자를 사용하고 차이를 알아본다.
reference 참조자의 쓰임을 확인하고 생성자에 초기화리스트를 사용해보자.
파일을 읽고 문자열을 대치시키고 새로운 파일을 만들어 저장하는 것을 알아본다.
멤버 함수 포인터를 알고 함수포인터 배열을 사용하기
스위치문 사용하기 + break 가용 시점에 따른 실행도 확인하기
**ex00 BraiiiiiiinnnzzzZ**
new 와 delete 를 사용한 동적할당을 접하고 정적할당과 정적할당의 소멸자가 불러오는 시점을 확인 할 수 있다.
**ex01 Moar brainz!**
new[] 와 delete[] 를 사용하여 배열 동적할당을 접한다.
Zombie *zhorde = new Zombie[N];
delete[] zhorde;
**ex02 HI THIS IS BRAIN**
pointer포인터와 reference참조자를 사용하고 차이를 알아본다.
std::string str = "HI THIS IS BRAIN";
std::string &stringREF = str;
std::string &a; // 누구의 참조인지 정해지지 않았다 error!
**ex03 Unnecessary violence**
reference 참조자의 쓰임을 확인하고 생성자에 초기화리스트를 사용해보자.
생성자 함수 블록 내에서 대입하여 초기화 하는 방법
초기화 리스트를 사용하여 초기화 하는 방법
HumanA::HumanA(std::string set_name, Weapon &set_weapon)
: name(set_name), weapon(set_weapon){ }
Weapon *weapon;
Weapon &weapon;
*arr[10]
이렇게 헷갈리게 접근하지 않고 arr[10]
으로 접근할 수 있어 코드가 깔끔해 진다.**ex04 Sed is for losers**
파일을 읽고 문자열을 대치시키고 새로운 파일을 만들어 저장하는 것을 알아본다.
c스타일 char*로 문자열을 받아오는 ifstream
이 아닌, 문자열을 string으로 받아오는 <string>
에 존재하는 getline
함수를 쓰는 것이 좋다.
string::npos
ifstream class
getline() fail
instruction
**ex05 Harl 2.0**
멤버 함수 포인터를 알고 함수포인터 배열을 사용하기
void (Harl::*f[4])( void ) = {&Harl::debug, &Harl::info, &Harl::warning, &Harl::error};
void (*p)(); // 서로 다른 의미의 선언 (외부 함수를 가르킬수 있는 포인터 변수)
void (*A::p)(); // 참고로 이선언은 위의 void (*p)();의 선언과 동일합니다 아래와 혼동하지 마시길...
void (A::*p)(); // 서로 다른 의미의 선언 (A클래스의 멤버 함수를 가르킬수 잇는 포인터 변수)
**ex06 Harl filter**
스위치문 사용하기 + break 사용 시점에 따른 실행도 확인하기
사용가능한 입력 변수의 타입은 byte, short, char, int
i와 일치하는 case 부터 시작하여 밑으로 차례대로 실행된다. 해당 case에 쓰여있는 부분만 실행되도록 하고 싶다면 break; 를 걸어주면 된다.
default 는 일치하는 값이 없다면 수행된다.
switch (i)
{
case 0:
this->debug();
case 1:
this->info();
case 2:
this->warning();
case 3:
this->error();
break;
default:
std::cout << "[ Probably complaining about insignificant problems ]" << std::endl;
break;
}