hugDog
Android DevLog
hugDog
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ™Œ Hello? (162)
    • ๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ (12)
      • ๊ฐœ๋… ์ •๋ฆฌ (5)
      • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (4)
      • ๊ธฐํƒ€ (3)
    • ๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜ (54)
      • ๊ฐœ๋… (0)
      • ๋ฐฑ์ค€ (48)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
    • ๐Ÿ“„๊ฐœ๋ฐœ ์ผ์ง€ (0)
      • FINPO (0)
    • ๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (71)
      • C++ ์ •๋ฆฌ (49)
      • C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ (20)
      • Kotlin (2)
    • โญProject (1)
    • ๐ŸšดTIL (13)
      • Clean Code (13)
    • ๐Ÿšฉ๊ธฐํƒ€ (9)
      • ๋ชฉํ‘œ (6)
      • ์ผ์ƒ (3)
      • ๋ฌธ์„œ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
hugDog

Android DevLog

๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ์ •๋ฆฌ

C++ ์ •๋ฆฌ - 28 (new ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ์ดˆ๊ธฐํ™”, ์œ„์น˜ ์ง€์ • new ์—ฐ์‚ฐ์ž, ์ด๋ฆ„ ๊ณต๊ฐ„, using ์„ ์–ธ๊ณผ using ์ง€์‹œ์ž, ์ด๋ฆ„ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ๋ณด์ถฉ)

2020. 10. 29. 18:16
728x90

new ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ์ดˆ๊ธฐํ™”

๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์ €์žฅ๊ณต๊ฐ„์„ ์›ํ•œ๋‹ค๋ฉด, ๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•ด ์ดˆ๊ธฐ ๊ฐ’ ์„ค์ • ๊ฐ€๋Šฅ

int *pi = new int(6);

double *pd = new double(99.99);

 

์ˆœ์ฐจ์ ์ธ ๊ตฌ์กฐ์ฒด๋‚˜ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”๋Š” c++11์—์„œ๋งŒ ๊ฐ€๋Šฅ

๋˜ํ•œ ์ค‘๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•œ ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

struct where{double x;double y;double z;};

where *one = new where{2.5,5.7,7.2};

int *ar = new int[4]{2,4,6,7};

 

c++11์—์„œ๋Š” ๋‹จ์ผ ๊ฐ’์„ ๊ฐ€์ง€๋Š” ๋ณ€์ˆ˜์— ๋Œ€ํ•ด์„œ๋„ ์ค‘๊ด„ํ˜ธ๋ฅผ ์ด์šฉํ•œ ์ดˆ๊ธฐํ™” ๊ฐ€๋Šฅ

int *pin = new int{6};

double *pdo = new double{99.99};

 

์œ„์น˜ ์ง€์ • new ์—ฐ์‚ฐ์ž

new ์—ฐ์‚ฐ์ž๋Š”, ์‚ฌ์šฉํ•  ์œ„์น˜๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์น˜ ์ง€์ • new๋ผ๋Š” ๋ณ€ํ˜•์ด ์žˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ ˆ์ฐจ๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋Š” ํ•˜๋“œ์›จ์–ด๋ฅผ ๋‹ค๋ฃจ๊ณ , ํŠน์ • ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜์— ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ

 

์œ„์น˜ ์ง€์ • new๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด, ๋จผ์ € new ํ—ค๋” ํŒŒ์ผ์„ ํฌํ•จ์‹œ์ผœ์•ผ ํ•จ

๊ทธ ํ›„ ์›ํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ new๋ฅผ ์‚ฌ์šฉ

 

#include<new>

struct chaff

{

char dross[20];

int slag;

};

char buffer1[50];

char buffer2[50];

 

int main()

{

chaff *p1,*p2;

int *p3,*p4;

 

p1=new chaff;

p3=new int[20];

 

p2=new(buffer1) chaff;

p4=new(buffer2) int[20];

}

 

์ด๋ฆ„ ๊ณต๊ฐ„

๊ตฌ์‹ c++ ์ด๋ฆ„ ๊ณต๊ฐ„

์„ ์–ธ ์˜์—ญ : ์„ ์–ธ์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ

ex) ์ „์—ญ ๋ณ€์ˆ˜๋Š” ๋ชจ๋“  ํ•จ์ˆ˜์˜ ๋ฐ”๊นฅ์—์„œ ์„ ์–ธ ๊ฐ€๋Šฅ

์ด ๋ณ€์ˆ˜์˜ ์„ ์–ธ ์˜์—ญ์€ ์„ ์–ธ๋œ ํŒŒ์ผ์ด๋‹ค.

์–ด๋–ค ๋ณ€์ˆ˜๋ฅผ ํ•จ์ˆ˜ ์•ˆ์— ์„ ์–ธํ•˜๋ฉด, ๊ทธ ๋ณ€์ˆ˜์˜ ์„ ์–ธ ์˜์—ญ์€ ์„ ์–ธ๋œ ๋ธ”๋ก์ด๋‹ค.

 

์ž ์žฌ ์‚ฌ์šฉ ๋ฒ”์œ„: ์–ด๋–ค ๋ณ€์ˆ˜์˜ ์ž ์žฌ ์‚ฌ์šฉ ๋ฒ”์œ„๋Š”, ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ์ง€์ ๋ถ€ํ„ฐ ์„ ์–ธ ์˜์—ญ์˜ ๋๊นŒ์ง€ ์ด๋‹ค.

 

์ƒˆ๋กœ์šด ์ด๋ฆ„ ๊ณต๊ฐ„ ๊ธฐ๋Šฅ

์ƒˆ๋กœ์šด ์ข…๋ฅ˜์˜ ์„ ์–ธ ์˜์—ญ์„ ์ •์˜ํ•จ์œผ๋กœ์จ ์ด๋ฆ„์ด ๋ช…๋ช…๋œ ์ด๋ฆ„ ๊ณต๊ฐ„์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

ex)

namespace Jack{

double pail;

void fetch();

int pal;

struct well{...};

}

namespace Jill{

double bucket(double n){...}

double fetch;

int pal;

struct Hill{...}

}

์ด๋ฆ„ ๊ณต๊ฐ„์€ ์ „์—ญ ์œ„์น˜ ๋˜๋Š” ๋‹ค๋ฅธ ์ด๋ฆ„ ๊ณต๊ฐ„ ์•ˆ์—๋„ ๋†“์ผ ์ˆ˜ ์žˆ์ง€๋งŒ ๋ธ”๋ก ์•ˆ์—๋Š” ๋†“์ผ ์ˆ˜ ์—†๋‹ค. (๊ธฐ๋ณธ์ ์œผ๋กœ ์™ธ๋ถ€ ๋งํฌ๋ฅผ ๊ฐ€์ง)

 

์‚ฌ์šฉ์ž๊ฐ€ ์ •์˜ํ•˜๋Š” ์ด๋ฆ„ ๊ณต๊ฐ„ ์™ธ์—, ์ „์—ญ ์ด๋ฆ„ ๊ณต๊ฐ„์ด๋ผ๋Š” ๋˜ ํ•˜๋‚˜์˜ ์ด๋ฆ„ ๊ณต๊ฐ„์ด ์žˆ๋‹ค.

์–ด๋–ค ํ•˜๋‚˜์˜ ์ด๋ฆ„ ๊ณต๊ฐ„์— ์†ํ•œ ์ด๋ฆ„์€ ๋‹ค๋ฅธ ์ด๋ฆ„ ๊ณต๊ฐ„์— ์†ํ•œ ์ด๋ฆ„๊ณผ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š”๋‹ค.

๊ธฐ์กด์˜ ์ด๋ฆ„ ๊ณต๊ฐ„์— ์ƒˆ๋กœ์šด ์ด๋ฆ„ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ

namespace Jill{

char * goose(const char *);

}

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋‹ค์‹œ Jack๋ผ๋Š” ์ด๋ฆ„ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ทธ ํŒŒ์ผ์˜ ๋’ค์— ๊ทธ ํ•จ์ˆ˜์˜ ์ฝ”๋“œ๋ฅผ ์ œ๊ณต ๊ฐ€๋Šฅ

namespace Jack{

void fetch()

{

...

}

}

์ด๋ฆ„์ด ์ ‘๊ทผํ•˜๋Š” ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•์€ ์‚ฌ์šฉ ๋ฒ”์œ„ ๊ฒฐ์ • ์—ฐ์‚ฐ์ž :: ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

Jack::pail=12.34;

Jill::Hill male;

Jack::fetch();

 

using ์„ ์–ธ๊ณผ using ์ง€์‹œ์ž

using ์„ ์–ธ์€ ํ•˜๋‚˜์˜ ํŠน๋ณ„ํ•œ ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค๊ณ , using ์ง€์‹œ์ž๋Š” ๊ทธ ์ด๋ฆ„ ๊ณต๊ฐ„ ์ „์ฒด์— ์ ‘๊ทผ ๊ฐ€๋Šฅ.

 

using ์„ ์–ธ์€ ์ œํ•œ๋œ ์ด๋ฆ„ ์•ž์— ํ‚ค์›Œ๋“œ using์„ ๋ถ™์ด๋Š” ๊ฒƒ

using Jill::fetch;

์ด ์„ ์–ธ์„ ํ•œ ์ดํ›„์—๋Š” Jill::fetch ๋Œ€์‹  fetch ์‚ฌ์šฉ ๊ฐ€๋Šฅ

 

using ์„ ์–ธ์„ ์™ธ๋ถ€ ์œ„์น˜์— ๋†“์œผ๋ฉด, ๊ทธ ์ด๋ฆ„์ด ์ „์—ญ ์ด๋ฆ„ ๊ณต๊ฐ„์— ์ถ”๊ฐ€๋จ.

using ์„ ์–ธ์€ ํ•˜๋‚˜์˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•˜์ง€๋งŒ

using ์ง€์‹œ์ž๋Š” ๋ชจ๋“  ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๊ฒŒ ํ•œ๋‹ค.

using namespace Jack; //Jack์— ์†ํ•œ ๋ชจ๋“  ์ด๋ฆ„ ์‚ฌ์šฉ

 

using ์ง€์‹œ์ž์™€ using ์„ ์–ธ๊ณผ ๊ด€๋ จํ•˜์—ฌ ๊ธฐ์–ตํ•ด์•ผ ํ•  ๊ฒƒ์€, ์ด๋ฆ„ ์ถฉ๋Œ์˜ ๊ฐ€๋Šฅ์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ด.

 

Jack::pal=3;

Jill::pal=10; //์ถฉ๋Œ x

 

using Jack::pal;

using Jill::pal;

pal=4; //์ถฉ๋Œ o

 

์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋‘ using ์„ ์–ธ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ํ—ˆ๋ฝํ•˜์ง€ ์•Š์Œ

 

์ด๋ฆ„ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ๋ณด์ถฉ

์ด๋ฆ„ ๊ณต๊ฐ„ ์„ ์–ธ์„ ์ค‘์ฒฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

namespace elements

{

namespace fire

{int flame; ...}

float water;

}

์ด ๊ฒฝ์šฐ flame ๋ณ€์ˆ˜๋ฅผ elements::fire::flame๋กœ ์ฐธ์กฐํ•œ๋‹ค.

using ์ง€์‹œ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๋ถ€์˜ ์ด๋ฆ„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

using namespace elements::fire;

 

์ด๋ฆ„ ๊ณต๊ฐ„ ์•ˆ์— using ์ง€์‹œ์ž์™€ using ์„ ์–ธ์„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

namespace myth

{

using Jill::fetch;

using namespace elements;

using std::cout;

using std::cin;

}

 

Jill::fetch์— ์ ‘๊ทผํ•˜๋Š” ๋ฒ•

1. myth::fecth;

2. Jill::fetch;

3. using namespace myth;

cin>>fetch;

 

using ์ง€์‹œ์ž๋Š” ๊ณผ๋„์ (transitive)์ด๋‹ค.

A op B์™€ B op C๊ฐ€ A op C๋ฅผ ์˜๋ฏธํ•œ๋‹ค๋ฉด op๋ฅผ ๊ณผ๋„์ ์ด๋ผ ํ•จ

๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ๋ฌธ์€

using namespace myth;

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ๋œ๋‹ค.

using namespace myth;

using namespace elements;

 

์–ด๋–ค ์ด๋ฆ„ ๊ณต๊ฐ„์— ๋Œ€ํ•œ ๋Œ€์šฉ ์ด๋ฆ„์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

namespace my_very_favorite_things {...};

mvft๋ฅผ my_very_favorite_things์˜ ๋Œ€์šฉ ์ด๋ฆ„์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

 

namespace mvft = my_very_favorite_things;

์ค‘์ฒฉ๋œ ์ด๋ฆ„ ๊ณต๊ฐ„์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

namespace MEF = myth::elements::fire;
using MEF::flame;

 

์ด๋ฆ„์„ ๋ช…๋ช…ํ•˜์ง€ ์•Š์€ ์ด๋ฆ„ ๊ณต๊ฐ„

namespace

{

int ice;

int bandycoot;

}

 

์ด ์ฝ”๋“œ๋Š” ๋งˆ์น˜ using ์ง€์‹œ์ž๊ฐ€ ๋’ค์— ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ํ–‰๋™ํ•จ.

๋‚ด๋ถ€ ๋งํฌ๋ฅผ ๊ฐ€์ง€๋Š” ์ •์  ๋ณ€์ˆ˜ ๋Œ€์‹  ์‚ฌ์šฉ ๊ฐ€๋Šฅ

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ
    '๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ์ •๋ฆฌ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • C++ ์ •๋ฆฌ - 30 (์ƒ์„ฑ์ž ์‚ฌ์šฉํ•˜๊ธฐ, ๋””ํดํŠธ ์ƒ์„ฑ์ž, ํŒŒ๊ดด์ž, c++11์˜ ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”, const ๋ฉค๋ฒ„ ํ•จ์ˆ˜, this ํฌ์ธํ„ฐ, ๊ฐ์ฒด ๋ฐฐ์—ด, ํด๋ž˜์Šค ์‚ฌ์šฉ ๋ฒ”์œ„, ๋ฒ”์œ„๊ฐ€ ์ •ํ•ด์ง„ ์—ด๊ฑฐ(c++11))
    • C++ ์ •๋ฆฌ - 29 (๊ฐ์ฒด์™€ ํด๋ž˜์Šค, ์ ˆ์ฐจ์‹ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ์ถ”์ƒํ™”์™€ ํด๋ž˜์Šค, c++์˜ ํด๋ž˜์Šค, ํด๋ž˜์Šค ๋ฉค๋ฒ„ํ•จ์ˆ˜์˜ ๊ตฌํ˜„, ์ธ๋ผ์ธ ๋ฉ”์„œ๋“œ, ํด๋ž˜์Šค ์„ ์–ธ์˜ ์ผ๋ฐ˜์ ์ธ ํ˜•์‹, ํด๋ž˜์Šค ์ƒ์„ฑ..
    • C++ ์ •๋ฆฌ - 27 (์ •์  ์กด์† ๊ธฐ๊ฐ„, ๋‚ด๋ถ€ ๋งํฌ, ์ •์  ๊ธฐ์–ต ์กด์† ์‹œ๊ฐ„, ๋งํฌ ์—†์Œ, ๊ธฐ์–ต ๊ณต๊ฐ„ ์ œํ•œ์ž, Cv-์ œํ•œ์ž, mutable, const์— ๋Œ€ํ•œ ๋ณด์ถฉ, ํ•จ์ˆ˜์™€ ๋งํฌ, ๊ธฐ์–ต ๊ณต๊ฐ„ ํ˜•์‹๊ณผ ๋™์  ๋Œ€์ž…)
    • C++ ์ •๋ฆฌ - 26 (๋ถ„ํ•  ์ปดํŒŒ์ผ,๊ธฐ์–ต ์กด์† ์‹œ๊ฐ„, ์‚ฌ์šฉ๋ฒ”์œ„, ๋งํฌ,์ž๋™ ๋ณ€์ˆ˜,์ •์  ๋ณ€์ˆ˜, ์ •์  ์กด์† ์‹œ๊ฐ„, ์™ธ๋ถ€ ๋งํฌ,์‚ฌ์šฉ ๋ฒ”์œ„ ๊ฒฐ์ • ์—ฐ์‚ฐ์ž)
    hugDog
    hugDog
    ์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!

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