42seoul/projects

[CPP Module] 01

moaoh 2021. 9. 16. 00:00

ν•„μš”ν•œ κ°œλ…μ •λ¦¬

ex00

  • μƒμ„±μž (Constructor) μƒμ„±μž (Constructor)
  • ν•΄λ‹Ή 클래슀의 객체가 μΈμŠ€ν„΄μŠ€ν™”λ  λ•Œ μžλ™μœΌλ‘œ ν˜ΈμΆœλ˜λŠ” νŠΉμˆ˜ν•œ μ’…λ₯˜μ˜ 멀버 ν•¨μˆ˜
  • μ†Œλ©Έμž (Destructor) μ†Œλ©Έμž (Destructor)
  • 객체가 μ†Œλ©Έλ  λ•Œ μžλ™μœΌλ‘œ μ‹€ν–‰λ˜λŠ” 클래슀의 멀버 ν•¨μˆ˜

2가지에 κ°œλ…μ— λŒ€ν•΄μ„œ λ°°μ›Œ λ³Ό 수 있던 파트


ex01

이전에 λ§Œλ“€μ—ˆλ˜ zombie class듀을 λ°°μ—΄λ‘œλ„ μ‚¬μš©ν•΄λ³΄κΈ°.


ex02

μ°Έμ‘°λΌλŠ” 것을 μ‚¬μš©ν• μ€„ μ•„λŠ”μ§€ λ¬Όμ–΄λ΄€λ˜ 파트

std::string str = "HI THIS IS BRAIN";
std::string* PTR = &str;
std::string& REF = str;

 


ex03

gettype() ν•¨μˆ˜λŠ” 전달받은 λ³€μˆ˜μ˜ νƒ€μž…μ„ λ°˜ν™˜ (const ν˜•μ‹)

settype() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ classλ‚΄ λ³€μˆ˜μ˜ 값을 λ³€κ²½
ex) 방문자수 ν‘œμ‹œ λ“± ν• λ•Œ μ‚¬μš©

클래슀 λ‚΄μ—μ„œ 값을 직접 κ°€μ Έμ˜€λŠ”κ²ƒλ³΄λ‹€ gettype()λ₯Ό μ‚¬μš©ν•΄μ„œ 값을 κ°€μ Έμ˜€λŠ” 것이

훨씬 λ³΄μ•ˆμ μœΌλ‘œ μ•ˆμ •μ μ΄λΌμ„œ 객체지ν–₯을 μ‚¬μš©ν• λ•ŒλŠ” 주둜 gettype와 settypeκ°€ μ‚¬μš©λœλ‹€.


ex04

std::string::size_type μ‚¬μš© 이유.

 

[펌]std::string::size_type 을 μ‚¬μš©ν•˜λŠ” 이유

 

zbaekhk.blogspot.com

 

void    ft_replace(std::string& line, std::string s1, std::string s2)
{
    std::string::size_type    start = 0;
    std::string::size_type    num;

    while ( (num = line.find(s1, start)) != std::string::npos)
    {
        line.erase(num, s1.length());
        line.insert(num, s2);
        start = num + s2.length();
    }
}

find : std::string 내뢀에 ν•΄λ‹Ήν•˜λŠ” 값이 어디에 μœ„μΉ˜ν•˜κ³ μžˆλŠ”μ§€ μ•Œλ €μ€€λ‹€.

npos : std::string::find() 의 유무λ₯Ό nposλ₯Ό ν†΅ν•΄μ„œ μ•Œ 수 μžˆλ‹€.

erase : num μœ„μΉ˜λΆ€ν„° length 길이만큼 μ§€μš΄λ‹€.

insert : num μœ„μΉ˜λΆ€ν„° s2 문자λ₯Ό 사이에 λ„£λŠ”λ‹€.


ex05

class Karen
{
private:
	/* data */
	void debug( void );
	void info( void );
	void warning( void );
	void error( void );
public:
	Karen(/* args */);
	~Karen();
	void complain( std::string level );
};

기쑴에 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν–ˆλ˜ 방식이 μ•„λ‹Œ privateμ•ˆμ— ν•¨μˆ˜λ₯Ό λ§Œλ“€μ–΄λ‘κ³  κ·Έ ν•¨μˆ˜λ“€μ„ κ°€μ Έλ‹€κ°€ μ‚¬μš©ν•˜λŠ” ν˜•μ‹μœΌλ‘œ

μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 방법을 μš”κ΅¬.

ν•¨μˆ˜λ₯Ό μ–΄λ–»κ²Œ κ΄€λ¦¬ν•˜κ³  μ–΄λ– ν•œ ν˜•μ‹μœΌλ‘œ μ‚¬μš©ν•  수 μžˆλŠ”μ§€μ— λŒ€ν•΄ μ „λ°˜μ μΈ 지식을 μš”κ΅¬ν–ˆλ˜ 파트


ex06

05μ—μ„œ 쑰금 더 μ—…κ·Έλ ˆμ΄λ“œκ°€ 된 ν˜•μ‹μœΌλ‘œ 인자λ₯Ό μ§μ ‘λ°›μ•„μ„œ κ·Έ 인자의 μƒμœ„κ°’λ“€λ„ 같이 좜λ ₯ν•΄μ•Όν•˜λŠ” ν˜•μ‹μœΌλ‘œ μ½”λ“œλ₯Ό μš”κ΅¬ν–ˆμ—ˆμŠ΅λ‹ˆλ‹€.

쑰금 더 잘 ν™œμš©ν•΄λ³΄κ³  μ΄λŸ¬ν•œ λ‹¨κ³„μ μΈμΆœλ ₯(?)에 κ°œλ…λ„ μ•Œμ•„λ³΄λΌλŠ” 문제.