[C++] ์–•์€ ๋ณต์‚ฌ(Shallow Copy)์™€ ๊นŠ์€ ๋ณต์‚ฌ(Deep Copy)

2020. 5. 15. 18:37ยท๐Ÿ“ Language/โœ C & C++
๊ธฐ์กด ๊ฐ์ฒด์™€ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•  ๋•Œ
๊ฐ’ ํ˜•์‹์ด๋ƒ ์ฐธ์กฐ ํ˜•์‹์ด๋ƒ์— ๋”ฐ๋ผ ๋ณต์‚ฌ๊ฐ€ ๋‚˜๋ˆ„์–ด์ง„๋‹ค.

 

์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ

 

์–•์€ ๋ณต์‚ฌ(Shallow Copy)

ํ•œ ๊ฐ์ฒด์˜ ๋ชจ๋“  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ์ฒด๋กœ ๋ณต์‚ฌํ•˜๋Š”๋ฐ ๊ฐ์ฒด๊ฐ€ ํฌ์ธํ„ฐ ํƒ€์ž…์˜ ๋ฉค๋ฒ„๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค๋ฉด ์ฃผ์†Œ ๊ฐ’๋งŒ ๋ณต์‚ฌ๋œ๋‹ค. ์ด๋•Œ, ์›๋ณธ ๊ฐ์ฒด๋ฅผ ์ œ๊ฑฐํ•  ๊ฒฝ์šฐ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ํฌ์ธํ„ฐ๋Š” ์ด๋ฏธ ์‚ญ์ œํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋Œ•๊ธ€๋ง ํฌ์ธํ„ฐ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

  • ์ฐธ์กฐ ํƒ€์ž… ๊ฐ์ฒด๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ์–•์€ ๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค.

 

๊นŠ์€ ๋ณต์‚ฌ(Deep Copy)

๋ชจ๋“  ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํฌ์ธํ„ฐ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ชจ๋“  ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ๋„ ๋ณต์‚ฌ๋ฅผ ์‹œํ–‰ํ•˜์—ฌ ๋ณต์‚ฌํ•œ ๊ฐ์ฒด์™€ ์ฐธ์กฐ๋œ ๊ฐ์ฒด๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ์œ ์ง€๋œ๋‹ค.

  • ๊ฐ’ ํ˜•์‹ ๊ฐ์ฒด๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ•œ๋‹ค.

 

struct Test {
    char* ptr;
};

void shallow_copy(Test& src, Test& dest) {
    dest.ptr = src.ptr;
}

void deep_copy(Test& src, Test& dest) {
    dest.ptr = new char[strlen(src.ptr) + 1];
    strcpy(dest.ptr, src.ptr);
}
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)
'๐Ÿ“ Language/โœ C & C++' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [C++] OOP ์†Œ๋ฉธ์ž์˜ virtual ํ‚ค์›Œ๋“œ
  • [C++] ์ •์ (Static) ๋ฉค๋ฒ„ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜
  • [C++] ์˜ค๋ฒ„๋กœ๋”ฉ(Overloding)๊ณผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(Overriding)
  • [C++] Call by value์™€ Call by reference
Blxxming
Blxxming
CS ์ง€์‹๊ณผ ๊ณต๋ถ€ํ•˜๋‹ค ๋ฐฐ์šด ๊ฒƒ, ๊ฒฝํ—˜ํ•œ ๊ฒƒ ๋“ฑ์„ ๊ธฐ๋กํ•˜๋Š” ๋ธ”๋กœ๊ทธ์ž…๋‹ˆ๋‹ค.
  • Blxxming
    ๐Ÿ’ก๋ฒˆ๋œฉ๐Ÿ’ก
    Blxxming
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ณต์ง€์‚ฌํ•ญ

    • Tech Interview
    • ๐Ÿ“š Tech (246)
      • ๐Ÿ“ Computer Science (96)
        • โœ OS (12)
        • โœ Network & Web (10)
        • โœ Database (11)
        • โœ Data Structure (6)
        • โœ Algorithm (40)
        • โœ Design Pattern (9)
        • โœ Cloud Computing (3)
        • โœ (5)
      • ๐Ÿ“ Language (73)
        • โœ Language (6)
        • โœ C & C++ (11)
        • โœ C# (19)
        • โœ JAVA (37)
      • ๐Ÿ“ Game (43)
        • โœ Computer Graphics (2)
        • โœ Unity (14)
        • โœ Unreal (26)
        • โœ (1)
      • ๐Ÿ“ Book (34)
        • โœ Effective (3)
        • โœ Game Server (16)
        • โœ Clean Code (14)
        • โœ (1)
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Blxxming
[C++] ์–•์€ ๋ณต์‚ฌ(Shallow Copy)์™€ ๊นŠ์€ ๋ณต์‚ฌ(Deep Copy)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”