ํฌ์ธํฐ์ ๊ฐ์ฒด์ ๋ํ ์์ฝ
๊ฐ์ฒด๋ฅผ ์ง์ํ๋ ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ ๋ ๋ค์๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ์ฌํญ์ ์์๋์ด์ผ ํ๋ค.
- ๊ฐ์ฒด๋ฅผ ์ง์ํ๋ ํฌ์ธํฐ๋ ์ผ๋ฐ์ ์ธ ํฌ์ธํฐ ํ๊ธฐ ํ์์ ์ฌ์ฉํ์ฌ ์ ์ธํ๋ค. String *glamour;
- ๊ธฐ์กด์ ๊ฐ์ฒด๋ฅผ ์ง์ํ๋๋ก ํฌ์ธํฐ๋ฅผ ์ด๊ธฐํ ํ ์ ์๋ค. String *first = &sayings[0];
- new๋ฅผ ์ฌ์ฉํ์ฌ ํฌ์ธํฐ๋ฅผ ์ด๊ธฐํ ๊ฐ๋ฅ. ์ ๊ฐ์ฒด๋ฅผ ์์ฑํจ String *f = new String(sayings[choice]);
- new๋ฅผ ํด๋์ค์ ํจ๊ป ์ฌ์ฉํ๋ฉด, ์๋ก ์์ฑ๋๋ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๊ธฐ ์ํด ์ ์ ํ ํด๋์ค ์์ฑ์๊ฐ ํธ์ถ๋๋ค. //๋ํดํธ ์์ฑ์ ํธ์ถ String *gleep = new String; //String(const char *) ์์ฑ์ ํธ์ถ String *glop=new String("my"); //String(const String &) ์์ฑ์ ํธ์ถ String *f=new String(sayings[choice]);
- ํฌ์ธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ํด๋์ค ๋ฉ์๋์ ์ ๊ทผํ๋ ค๋ฉด -> ์ฐ์ฐ์ ์ฌ์ฉ
- ๊ฐ์ฒด๋ฅผ ์ป๊ธฐ ์ํด ๊ฐ์ฒด๋ฅผ ์ง์ํ๋ ํฌ์ธํฐ์ ๋ด์ฉ ์ฐธ์กฐ ์ฐ์ฐ์(*)๋ฅผ ์ ์ฉํ๋ค.
๋ฉค๋ฒ ์ด๊ธฐ์ ๋ฆฌ์คํธ(member initializer list)
์์ ์ฝ๋ก (:)์ด ๋ถ์ด์๊ณ , ์ด๊ธฐ์๋ค์ ์ฝค๋ง๋ก ๋ถ๋ฆฌํด ๋์ ๋ฆฌ์คํธ์ด๋ค. ๋ฉค๋ฒ ์ด๊ธฐ์ ๋ฆฌ์คํธ๋ ๋งค๊ฐ ๋ณ์ ๋ฆฌ์คํธ์ ๋ซ๋ ์ํํธ ๋ค์, ํจ์ ๋ชธ์ฒด์ ์ฌ๋ ์ค๊ดํธ ์์ ๋์ธ๋ค.
ex)
Queue::Queue(int qs): qsize(qs)
{...}
qsize๋ const ํ, qsize๋ฅผ qs๋ก ์ด๊ธฐํํจ
์ด๋ฌํ ๋ฉค๋ฒ ์ด๊ธฐ์ ๋ฆฌ์คํธ ๋ฌธ๋ฒ์ ์์ฑ์๋ง์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. const ํด๋์ค ๋ฉค๋ฒ, ์ฐธ์กฐ๋ก ์ ์ธ๋ ํด๋์ค ๋ฉค๋ฒ๋ค์ ๋ํด์๋ ์ด ๋ฌธ๋ฒ์ ์ฌ์ฉํด์ผ ํ๋ค. (const ๋ฐ์ดํฐ์ ์ฐธ์กฐ๋ ์์ฑ๋ ๋์๋ง ์ด๊ธฐํ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ)
๋ฉค๋ฒ ์ด๊ธฐ์ ๋ฆฌ์คํธ ๋ฌธ๋ฒ
Classy๊ฐ ํด๋์ค์ด๊ณ mem1,mem2,mem3๊ฐ ํด๋์ค ๋ฐ์ดํฐ ๋ฉค๋ฒ๋ผ๋ฉด, ํด๋์ค ์์ฑ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ทธ ๋ฐ์ดํฐ ๋ฉค๋ฒ๋ค ์ด๊ธฐํ ๊ฐ๋ฅ
Classy::Classy(int n,int m):mem1(n),mem2(0),mem3(n*m+2)
ํด๋์ค์ ์์
ํด๋์ค ์์์ ๊ธฐ์ด ํด๋์ค๋ผ ๋ถ๋ฅด๋ ํด๋์ค๋ก๋ถํฐ ๋ชจ๋ ๋ฉ์๋์ ๋ฉค๋ฒ๋ค์ ์์๋ฐ์, ์๋ก์ด ํ์ ํด๋์ค๋ฅผ ๋ง๋ค ์ ์๊ฒ ํ๋ค.
์์์ ํตํด ๋ค์๊ณผ ๊ฐ์ ์ผ์ ํ ์ ์๋ค.
- ๊ธฐ์กด์ ํด๋์ค์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ค. ์๋ฅผ ๋ค์ด ๊ฐ๋จํ array ํด๋์ค๊ฐ ์๋ค๋ฉด, ๊ฑฐ๊ธฐ์ ์ฐ์ ์ฐ์ฐ์ ๋ ์ถ๊ฐํ ์ ์๋ค.
- ํด๋์ค๊ฐ ๋ํ๋ด๊ณ ์๋ ๋ฐ์ดํฐ์ ๋ค๋ฅธ ๊ฒ์ ๋ ์ถ๊ฐํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ๋จํ ๋ฌธ์์ด ํด๋์ค๊ฐ ์๋ค๋ฉด, ๊ทธ ๋ฌธ์์ด์ ์ถ๋ ฅํ ๋ ์ฌ์ฉํ ์์์ ๋ํ๋ด๋ ๋ฐ์ดํฐ ๋ฉค๋ฒ๊ฐ ์ถ๊ฐ๋ ํด๋์ค๋ฅผ ํ์์ํฌ ์ ์๋ค.
- ํด๋์ค ๋ฉ์๋๊ฐ ๋์ํ๋ ๋ฐฉ์์ ๋ณ๊ฒฝํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ๋นํ๊ธฐ ์น๊ฐ์๊ฒ ์ ๊ณต๋๋ ์๋น์ค๋ค์ ๋ํ๋ด๋ Passenger ํด๋์ค๊ฐ ์๋ค๋ฉด, ๊ณ ๊ธ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ FirstClassPassenger ํด๋์ค๋ฅผ ํ์์ํฌ ์ ์๋ค.
ํด๋์ค ํ์์ํค๊ธฐ
TableTennisPlayer๋ผ๋ ํด๋์ค๊ฐ ์๋ค๊ณ ๊ฐ์
TableTennisPlayer ํด๋์ค์์ RatedPlayer ํด๋์ค๋ฅผ ํ์์์ผ ๋ณด์. ์ฒซ ๋จ๊ณ๋ RatedPlayer ํด๋์ค๊ฐ TableTennisPlayer๋ก๋ถํฐ ํ์๋์๋ค๋ ์ฌ์ค์ ์ ์ ์๋๋ก ์ ์ธ.
class RatedPlayer: public TableTennisPlayer
{...}
์ฌ๊ธฐ์ ์ฝ๋ก ์ RatedPlayer ํด๋์ค๊ฐ TableTennisPlayer ํด๋์ค์ ๊ธฐ์ด๋ฅผ ๋๊ณ ์๋ค๋ ๊ฒ์ ๋ํ๋ธ๋ค. TableTennisPlayer๊ฐ public ๊ธฐ์ด ํด๋์ค๋ผ๋ ๊ฒ์ ๋ํ๋. ์ด๊ฒ์ public ํ์์ด๋ผ ํ๋ค.
RatedPlayer ๊ฐ์ฒด๋ฅผ ์ ์ธํ๋ฉด, ๊ทธ ๊ฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ ํน๋ณํ ์์ฑ์ ๊ฐ์ง
- ํ์ ํด๋์คํ์ ๊ฐ์ฒด ์์๋ ๊ธฐ์ด ํด๋์คํ์ ๋ฐ์ดํฐ ๋ฉค๋ฒ๋ค์ด ์ ์ฅ๋๋ค.(ํ์ ํด๋์ค๋ ๊ธฐ์ด ํด๋์ค์ ๊ตฌํ๋ค์ ์์๋ฐ๋๋ค.)
- ํ์ ํด๋์คํ์ ๊ฐ์ฒด๋ ๊ธฐ์ด ํด๋์คํ์ ๋ฉ์๋๋ค์ ์ฌ์ฉํ ์ ์๋ค.(ํ์ ํด๋์ค๋ ๊ธฐ์ด ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ์์ ๋ฐ์)
์์๋ฐ์ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๊ฒ
- ํ์ ํด๋์ค๋ ์๊ธฐ ์์ ์ ์์ฑ์๋ฅผ ํ์๋ก ํจ
- ํ์ ํด๋์ค๋ ๋ถ๊ฐ์ ์ธ ๋ฐ์ดํฐ ๋ฉค๋ฒ๋ค๊ณผ ๋ฉค๋ฒ ํจ์๋ค์ ํ์ํ ๋งํผ ์ถ๊ฐ ๊ฐ๋ฅ
์ฌ๊ธฐ์ ์์ฑ์๋ค์ ์๋ก ์ถ๊ฐ๋ ๋ฐ์ดํฐ ๋ฉค๋ฒ์ ์์๋ฐ์ ๋ฐ์ดํฐ ๋ฉค๋ฒ๋ค์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.
์์ฑ์:์ ๊ทผ์ ๋ํ์ฌ
ํ์ ํด๋์ค๋ ๊ธฐ์ด ํด๋์ค์ private ๋ฉค๋ฒ์ ์ง์ ์ ๊ทผํ ์ ์๋ค.
๊ธฐ์ด ํด๋์ค์ ๋ฉ์๋๋ค์ ํตํด ์ ๊ทผํด์ผ ํ๋ค.
ํ๋ก๊ทธ๋จ์ด ํ์ ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑํ ๋, ๋จผ์ ๊ธฐ์ด ํด๋์ค์ ๊ฐ์ฒด๋ฅผ ์์ฑ
-> ํ๋ก๊ทธ๋จ์ด ํ์ ํด๋์ค ์์ฑ์์ ๋ชธ์ฒด ์์ผ๋ก ๋ค์ด๊ฐ๊ธฐ ์ ์, ๊ธฐ์ด ํด๋์ค ๊ฐ์ฒด๊ฐ ๋จผ์ ์์ฑ๋์ด์ผ ํ๋ค.
c++์ ์ด๋ฅผ ์ํด ๋ฉค๋ฒ ์ด๊ธฐ์ ๋ฆฌ์คํธ ๋ฌธ๋ฒ์ ์ฌ์ฉํจ.
๋ฉค๋ฒ ์ด๊ธฐ์ ๋ฆฌ์คํธ๋ฅผ ์๋ตํ ๊ฒฝ์ฐ, ํ๋ก๊ทธ๋จ์ ๋ํดํธ ๊ธฐ์ด ํด๋์ค ์์ฑ์๋ฅผ ์ฌ์ฉํ๋ค.
ํ์ ํด๋์ค ์์ฑ์์ ์์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๊ธฐ์ด ํด๋์ค ๊ฐ์ฒด๊ฐ ๋จผ์ ์์ฑ๋๋ค.
- ํ์ ํด๋์ค ์์ฑ์๊ฐ ๋ฉค๋ฒ ์ด๊ธฐ์ ๋ฆฌ์คํธ๋ฅผ ํตํด ๊ธฐ์ด ํด๋์ค ์์ฑ์์ ๊ธฐ์ด ํด๋์ค ์ ๋ณด๋ฅผ ์ ๊ณตํด์ผ ํ๋ค.
- ํ์ ํด๋์ค ์์ฑ์๋ ํ์ ํด๋์ค์ ์๋ก ์ถ๊ฐ๋ ๋ฐ์ดํฐ ๋ฉค๋ฒ๋ค์ ์ด๊ธฐํํด์ผ ํ๋ค.
ํ์ ํด๋์ค์ ๊ธฐ์ด ํด๋์ค์ ํน๋ณํ ๊ด๊ณ
- ํ์ ํด๋์ค ๊ฐ์ฒด๋ ๊ธฐ์ด ํด๋์ค ๋ฉ์๋๋ค์ด private์ด ์๋๋ฉด ์ฌ์ฉ ๊ฐ๋ฅ
- ๊ธฐ์ด ํด๋์ค ํฌ์ธํฐ๋ ๋ช ์์ ๋ฐ์ดํฐํ ๋ณํ ์์ด๋ ํ์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ง์ํ ์ ์๋ค.
- ๊ธฐ์ด ํด๋์ค ์ฐธ์กฐ๋ ๋ช ์์ ๋ฐ์ดํฐํ ๋ณํ ์์ด๋ ํ์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์ ์๋ค.
RatedPlayer rplayer1(1140,"m","de",true);
TableTennisPlayer &rt = rplayer1;
TableTennisPlayer *pt=&rplayer1;
rt.Name();
pt->Name();
but, ํ์ ํด๋์ค์ ์ฐธ์กฐ์ ํฌ์ธํฐ์ ๊ธฐ์ด ํด๋์ค์ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ ๋์ ๋ถ๊ฐ
๊ธฐ์ด ํด๋์ค ์ฐธ์กฐ์ ํฌ์ธํฐ๊ฐ ํ์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ ์ ์๋ค๋ ์ฌ์ค์, ๋ช ๊ฐ์ง ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์จ๋ค.
- ๊ธฐ์ด ํด๋์ค ์ฐธ์กฐ์ ํฌ์ธํฐ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ์ฌ์ฉํ๋ ํจ์๋, ๊ธฐ์ด ํด๋์ค ๊ฐ์ฒด์๋ ์ฌ์ฉ ๊ฐ๋ฅํ๊ณ ํ์ ํด๋์ค ๊ฐ์ฒด์๋ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ด์ ๊ฐ์ ์ฐธ์กฐ ํธํ์ฑ์ ๊ธฐ์ด ํด๋์ค ๊ฐ์ฒด๋ฅผ ํ์ ํด๋์ค ๊ฐ์ฒด๋ก ์ด๊ธฐํํ๋ ๊ฒ๋ ๊ฐ์ ์ ์ผ๋ก ํ์ฉํ๋ค.
- ํ์ ํด๋์ค ๊ฐ์ฒด๋ฅผ ๊ธฐ์ด ํด๋์ค ๊ฐ์ฒด์ ๋์ ๊ฐ๋ฅ