๋ชฉ๋ก๐ฉ๐ป IoT (Embedded) (235)
๐ ๊ณต๋ถํ๋ ์ง์ง์ํ์นด๋ ์ฒ์์ด์ง?
๐ ์ฐธ์กฐ reference ํฌ์ธํฐ ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ์ํด * ๊ธฐํธ๋ฅผ ์ฌ์ฉํ์ง๋ง ์ฐธ์กฐ ๋ณ์๋ฅผ ์ ์ธํ๊ธฐ ์ํด & ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋ค ์ฐธ์กฐ ๋ณ์๋ ์ ์ธ๋ ๋ณ์์ ๋ํ ๋ณ๋ช (alias) โ๏ธ ์ฐธ์กฐ ๋ณ์ ์ด๋ฏธ ์ ์ธ๋ ๋ณ์ (์๋ณธ ๋ณ์๋ก ์ง์นญ) ์ ๋ํ ๋ณ๋ช ์ฐธ์กฐ์ & ๋ฅผ ์ด์ฉํ์ฌ ์ ์ธํ๋ฉฐ, ์ ์ธ ์ ๋ฐ๋์ ์๋ณธ ๋ณ์๋ก ์ด๊ธฐํ ํด์ผ ํ๋ค ์ฐธ์กฐ ๋ณ์๊ฐ ์ ์ธ๋๋ฉด ์ฐธ์กฐ ๋ณ์ ์ด๋ฆ๋ง ์์ฑ๋๋ฉฐ, ๋ณ๋์ ๊ณต๊ฐ์ด ํ ๋น๋์ง ์๋๋ค ์ฐธ์กฐ ๋ณ์๋ ์ด๊ธฐํ๋ก ์ง์ ๋ ์๋ณธ ๋ณ์์ ๊ณต๊ฐ์ ๊ณต์ ํ๋ค โ๏ธ์ฐธ์กฐ ๋ณ์ ์ฌ์ฉ ์ฐธ์กฐ ๋ณ์๋ ํฌ๋ํฐ๊ฐ ์๋๋ฏ๋ก refn.setRadius(30) ์ด๋ ๊ฒ ํด์ผ ํ๋ค ์ฐธ์กฐ ๋ณ์์ ๋ํ ํฌ์ธํฐ๋ฅผ ๋ง๋ค ์ ์๋ค int *p = &refn; โ๏ธ์ฐธ์กฐ ๋ณ์ ์ ์ธ ์ ์ฃผ์ ์ฌํญ ์ด๊ธฐํ๊ฐ ์๋ค๋ฉด ์ปดํ์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค ์ฐธ์กฐ..
๐ ๊ฐ์ฒด ์นํ ๊ฐ์ฒด์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋นํธ ๋จ์๋ก ๋ณต์ฌ๋๋ค ๐ ํจ์์ ๊ฐ์ฒด ๋ฆฌํด return ๋ฌธ์ด ์คํ๋๋ฉด ๋ณต์ฌ๋ณธ์ด ์๊ธฐ๊ณ ํจ์๋ฅผ ํธ์ถํ ๊ณณ์ผ๋ก ์ ๋ฌ๋๋ค // ๊ฐ์ฒด ๋ฆฌํด #include using namespace std; class Circle { int radius; public: Circle() { radius = 1; } Circle(int radius) { this->radius = radius; } void setRadius(int radius) { this->radius = radius; } double getArea() { return 3.14 * radius * radius; } }; Circle getCircle() { Circle tmp(30); // tmp ๊ฐ์ฒด์ ๋ณต์ฌ๋ณธ ๋ฆฌํด retu..
๐ ํจ์ ํธ์ถ ์ ๊ฐ์ฒด ์ ๋ฌ โ๏ธ 1) ๊ฐ์ ์ํ ํธ์ถ ๊ณผ์ ํจ์ ์์์ ๋งค๊ฐ ๋ณ์ ๊ฐ์ฒด์ ์ด๋ค ๋ณํ๊ฐ ์ผ์ด๋๋ ์ค์ธ์ (์๋ณธ ๊ฐ์ฒด) ๋ฅผ ํผ์์ํค์ง ์๋ ์ฅ์ ์ค์ธ์ ๊ฐ์ฒด์ ํฌ๊ธฐ๊ฐ ํฌ๋ฉด ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๋ ์๊ฐ์ด ์ปค์ง๋ ๋จ์ ๊ฐ์ฒด๊ฐ ํจ์์ ์ ๋ฌ๋๋ฉด, ํจ์์ ๋งค๊ฐ ๋ณ์ ๊ฐ์ฒด๊ฐ ์์ฑ๋๊ณ , ํจ์๊ฐ ์ข ๋ฃํ๋ฉด ๋งค๊ฐ ๋ณ์ ๊ฐ์ฒด๊ฐ ์๋ฉธ๋๋ค ๋งค๊ฐ ๋ณ์ ๊ฐ์ฒด์ ์์ฑ์์ ์๋ฉธ์๊ฐ ๋ชจ๋ ์คํ๋๋๊ฐ? -> ์๋๋ค ๊ฐ์ฒด๋ฅผ ๋งค๊ฐ ๋ณ์๋ก ๊ฐ์ง๋ ํจ์์ ๊ฒฝ์ฐ C++ ์ปดํ์ผ๋ฌ๋ ๋งค๊ฐ ๋ณ์ ๊ฐ์ฒด์ ์์ฑ์๋ ์คํ๋์ง ์๊ณ ์๋ฉธ์๋ง ์คํ๋๋๋ก ์ปดํ์ผ ํ๋ค ์ปดํ์ผ๋ฌ๋ ๋งค๊ฐ ๋ณ์ ๊ฐ์ฒด์ ์์ฑ์๊ฐ ์คํ๋์ง ์๋๋ก ํ๋ค ์๋ฉธ์์ ๊ฒฝ์ฐ๋ ๋ค๋ฅด๋ค ๋งค๊ฐ ๋ณ์ ๊ฐ์ฒด์ ์์ฑ์๊ฐ ์คํ๋์ง ใ ๋ณ๊ณ ์๋ฉธ์๋ง ์คํ๋๋ ๋น๋์นญ ๊ตฌ์กฐ๋, ํจ์ ํธ์ถ ์ ์๋ณธ ๊ฐ์ฒด์ ์ํ..
๐ ํจ์์ ์ธ์ ์ ๋ฌ ๋ฐฉ์ โ๏ธ 1) ๊ฐ์ ์ํ ํธ์ถ (call by value) ํธ์ถํ๋ ์ฝ๋์์ ๋๊ฒจ์ฃผ๋ ์ค์ธ์ ๊ฐ์ด ํจ์์ ๋งค๊ฐ ๋ณ์์ ๋ณต์ฌ๋์ด ์ ๋ฌ๋๋ ๋ฐฉ์ ์ค์ธ์์ ๊ฐ์ ๋ณต์ฌํ์ฌ ์ ๋ฌํ๋ฏ๋ก, ํจ์ ๋ด์์ ์ค์ธ์๋ฅผ ์์์ํฌ ์ ์๋ ์ฅ์ ์ด ์๋ค ๋งค๊ฐ ๋ณ์ a, b ๊ฐ swap() ํจ์์ ์คํ์ ์์ฑ๋๊ณ , m, n ๊ฐ์ด a, b์ ๋ณต์ฌ๋๋ค a์ b๊ฐ์ด ์๋ก ๊ตํ๋๊ณ , swap() ํจ์๊ฐ ์ข ๋ฃํ๋ฉด swap() ์คํ๊ณผ ํจ๊ป a, b ๋ ์ฌ๋ผ์ง์ง๋ง main() ์คํ์ m, n ์ ๋ณํจ์์ด 2, 9 ๊ฐ์ ์ ์งํ๋ค // ๊ฐ์ ์ํ ํธ์ถ๋ก swap ํจ์ ํธ์ถ #include using namespace std; void swap(int a, int b) { int tmp; tmp = a; a = b; b = ..
๐ ๋ฌธ์์ด ์นํ string a = "hi"; string b = "hello"; a = b; ๐ ๋ฌธ์์ด ๋น๊ต compare ๋ ๋ฌธ์์ด์ด ๊ฐ์ผ๋ฉด 0, str ๋ณด๋ค ์ฌ์ ์์ผ๋ก ์์ ์ค๋ฉด ์์, ๋ค์ ์ค๋ฉด ์์ string name = "gani"; string alias = "tani"; int res = name.compare(alias); if (res == 0) cout
๐ this ํฌ์ธํฐ โ๏ธ this ๋ ๊ฐ์ฒด ์์ ์ ๋ํ ํฌ์ธํฐ ํด๋์ค์ ๋ฉค๋ฒ ํจ์ ๋ด์์๋ง ์ฌ์ฉ๋๋ค this ๋ ์ ์ญ ๋ณ์๋ ์๋๊ณ ํจ์ ๋ด์ ์ ์ธ๋ ์ง์ญ ๋ณ์๋ ์๋๋ค this ๋ ๊ฐ์ฒด์ ๋ฉค๋ฒ ํจ์๊ฐ ํธ์ถ๋ ๋, ์ปดํ์ผ๋ฌ์ ์ํด ๋ณด์ด์ง ์๊ฒ ์ ๋ฌ๋๋ ๊ฐ์ฒด์ ๋ํ ์ฃผ์์ด๋ค โ๏ธ this ์ ๊ฐ์ฒด this ๋ ๊ฐ์ฒด ์์ ์ ๋ํ ํฌ์ธํฐ ์์ฑ์ ํจ์์ ๊ฒฝ์ฐ this-> ๋ ์๋ต ๊ฐ๋ฅ โ๏ธthis ์ ํ์ํ ๊ฒฝ์ฐ 1) ๋ฉค๋ฒ ๋ณ์์ ์ด๋ฆ๊ณผ ๋์ผํ ์ด๋ฆ์ผ๋ก ๋งค๊ฐ ๋ณ์ ์ด๋ฆ์ ์ง๊ณ ์ ํ๋ ๊ฒฝ์ฐ ๋งค๊ฐ ๋ณ์์ ์ด๋ฆ์ ์์ค ํ๋ก๊ทธ๋จ์ ๊ฐ๋ ฅํ ์ฃผ์ ์ญํ ์ด๋ค 2) ๊ฐ์ฒด์ ๋ฉค๋ฒ ํจ์์์ ๊ฐ์ฒด ์์ ์ ์ฃผ์๋ฅผ ๋ฆฌํดํ ๋ ํ์ํ๋ค ์ฐ์ฐ์ ์ค๋ณต์ ๊ตฌํํ ๋, ๋ง์ด ๋ฐ์ํ๋ค โ๏ธthis ์ ์ ์ฝ ์กฐ๊ฑด this ๋ ํด๋์ค์ ๋ฉค๋ฒ ํจ์์์..
๐ ๊ฐ์ฒด ํฌ์ธํฐ ์ ์ธ ๋ฐ ํ์ฉ โ๏ธ ๊ฐ์ฒด ํฌ์ธํฐ ๊ฐ์ฒด์ ๋ฉค๋ฒ ํจ์๋ฅผ ์ฝ๊ณ ๊ฐ์ ์ฐ๊ฑฐ๋ ๋ฉค๋ฒ ํจ์๋ฅผ ํธ์ถํ ์ ์๋ค โ๏ธ ๊ฐ์ฒด์ ๋ํ ํฌ์ธํฐ ๋ณ์ ์ ์ธ Circle *p; โ๏ธํฌ์ธํฐ ๋ณ์์ ๊ฐ์ฒด ์ฃผ์ ์ง์ ๊ฐ์ฒด์ ์ฃผ์๋ ๊ฐ์ฒด ์ด๋ฆ ์์ & ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ํํํ๋ค p = &donut; โ๏ธํฌ์ธํฐ๋ฅผ ์ด์ฉํ ๊ฐ์ฒด ๋ฉค๋ฒ ์ ๊ทผ ๊ฐ์ฒด ์ด๋ฆ์ผ๋ก ๋ฉค๋ฒ๋ฅผ ์ ๊ทผํ ๋ ์ (.) ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ค d = donut.getArea(); ๊ฐ์ฒด ํฌ์ธํฐ๋ก ๋ฉค๋ฒ๋ฅผ ์ ๊ทผํ ๋ -> ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ค d = p -> getArea(); d = (*p).getArea(); // ๊ฐ์ฒด ํฌ์ธํฐ ์ ์ธ ๋ฐ ํ์ฉ #include using namespace std; class Circle { int radius; public: Circle() {..
๐ Circle ํด๋์ค์ ๊ฐ์ฒด ์์ฑ ๋ฐ ํ์ฉ // Circle ํด๋์ค์ด ๊ฐ์ฒด ์์ฑ ๋ฐ ํ์ฉ #include using namespace std; class Circle { public: int radius; double getArea(); }; double Circle::getArea() { return 3.14 * radius * radius; } int main() { // ๊ฐ์ฒด ์์ฑ Circle donut; // ๋ฉค๋ฒ ๋ณ์ donut.radius = 1; // ๋ฉค๋ฒ ํจ์ double area = donut.getArea(); cout