Object Programming In C ¶
sample code ¶
~cpp #include <stdio.h> struct testClass { int attrib; void (*method1)(int); }; void Operator1(int x) { printf("%d\n", x); } int main() { testClass instanceClass; instanceClass.method1= &Operator1; instanceClass.method1(3); // or Operator1(3); return 0; }
thread ¶
๊ฒฐ๊ตญ ํฌ์ธํฐ.
--
typedef struct
{
----
์ฌ๊ธฐ์ Question. ๋ง์ผ attrib ๋ฅผ ์ฐ๊ณ ์ถ๋ค๋ฉด? --1002
----
๊ฒฐ๊ตญ private๊ฐ ์๋จ ์๋ฆฐ๋ฐ... ์ปดํ์ผ ๊น์ง๋ง ํด์ lib ํํ๋ก header์ publicํ ํ ๊ฒ๋ง ๊ณต๊ฐํ๋ค๋ฉด... ๋ถ๊ฐ๋ฅ์ด๊ตฐ...
์ฐจ๋ผ๋ฆฌ ์ ๊ตฌ์กฐ์ฒด๋ง ๋ค๋ฅธ lib์ ์ ์ฅ์ํค๊ณ ๋งํฌ๋ฅผ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ด๋ถ์์๋ง ์ฐ์ฐ์ ํ๋ค๋ฉด ๋ชฐ๋ผ๋. return value๋ kernel์ด๋ IPC๋ก ๋๊ฒจ ์ค์ผํ ๋ฏ.
์ด๋ ๊ฒ ๋๋ค๋ฉด class์์ private๋ฅผ ์ฐ๋ ๋ชฉ์ ์ ๋ฌ์ฑ์ ํ์ง๋ง ํจ์ฉ์ฑ์ ๊ฑฐ์ ์ ๋ก๊ฒ ๊ณ ...
attrib์ ์ฐ๋๋ค๋ ๋ฌธ์ ๋ฅผ ์ฃผ์ จ๋๋ฐ... attrib๊ฐ private๋ผ ๊ฐ์ ํ๊ณ , ๋ฐ๋ผ์ method1์ ํจ์๊ฐ ๊ตฌ์กฐ์ฒด(ํด๋์ค)์ attrib์ ๊ณ ์น๋ค๋ ๋ป์ผ๋ก ํ๋จํ๊ณ ์๊ฐํด๋ณธ๋ค๋ฉด... C++์ this๋ ์์ฝ์ด๊ฐ ์๋ค๋ฉด C์ธ์ด์์ C++๊ณผ ๊ฐ์ class์ ํํ์ ์ด๋ ค์ธ ๋ฏ. ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ก ๊ฐ๋ฅ์ ํ ์๋ ์์ผ๋, ์ฝ๋ ์กฐ์์ ์ด์ ๋ธ๋ฆฌ ์ฐจ์์ผ๋ก ๋ด๋ ค๊ฐ ํ๋ํ๋ ์๋ด์ผํจ... (์ด ๋ต์ด ์๋๋ผ๋ฉด ๋ญํจ)
--์ด์ํธ
ํจ์์ธ์๋ก ๋ช ์์ ์ผ๋ก ํฌ์ธํฐ๋ฅผ ๋๊ฒจ์ฃผ๋์ง ํด์ผ๊ฒ ๋ค ใ ก.ใ ก;; ๊ฒฐ๊ตญ ๋ป์ง์ด๊ตฌ๋ง ใ ใ ใ - eternalbleu
๋ณ ๋ค๋ฅธ ๋ป์ ์๋๊ณ , C++ ์ปดํ์ผ๋ฌ์ ๊ฒฝ์ฐ ๋ฉ์๋์ธ ๊ฒฝ์ฐ ์ธ์๋ก์ this ๋ฅผ ์๋์ผ๋ก ๋๊ฒจ์ค๋ค๊ณ ํด์. ๊ทธ๋ฆฌ๊ณ , attrib ์ด private ์ด ์๋ public ์ด๋ผ ํ๋๋ผ๋, ๋๊ฐ์ ์ง๋ฌธ์ด ๊ฐ๋ฅํ ๋ฏ. --1002
typedef struct
{
int attrib;
void (*method1)(int);
}testClass; --์ด์ํธ
void (*method1)(int);
----
์ฌ๊ธฐ์ Question. ๋ง์ผ attrib ๋ฅผ ์ฐ๊ณ ์ถ๋ค๋ฉด? --1002
----
๊ฒฐ๊ตญ private๊ฐ ์๋จ ์๋ฆฐ๋ฐ... ์ปดํ์ผ ๊น์ง๋ง ํด์ lib ํํ๋ก header์ publicํ ํ ๊ฒ๋ง ๊ณต๊ฐํ๋ค๋ฉด... ๋ถ๊ฐ๋ฅ์ด๊ตฐ...
์ฐจ๋ผ๋ฆฌ ์ ๊ตฌ์กฐ์ฒด๋ง ๋ค๋ฅธ lib์ ์ ์ฅ์ํค๊ณ ๋งํฌ๋ฅผ ๋ถ๊ฐ๋ฅํ๊ฒ ๋ด๋ถ์์๋ง ์ฐ์ฐ์ ํ๋ค๋ฉด ๋ชฐ๋ผ๋. return value๋ kernel์ด๋ IPC๋ก ๋๊ฒจ ์ค์ผํ ๋ฏ.
์ด๋ ๊ฒ ๋๋ค๋ฉด class์์ private๋ฅผ ์ฐ๋ ๋ชฉ์ ์ ๋ฌ์ฑ์ ํ์ง๋ง ํจ์ฉ์ฑ์ ๊ฑฐ์ ์ ๋ก๊ฒ ๊ณ ...
attrib์ ์ฐ๋๋ค๋ ๋ฌธ์ ๋ฅผ ์ฃผ์ จ๋๋ฐ... attrib๊ฐ private๋ผ ๊ฐ์ ํ๊ณ , ๋ฐ๋ผ์ method1์ ํจ์๊ฐ ๊ตฌ์กฐ์ฒด(ํด๋์ค)์ attrib์ ๊ณ ์น๋ค๋ ๋ป์ผ๋ก ํ๋จํ๊ณ ์๊ฐํด๋ณธ๋ค๋ฉด... C++์ this๋ ์์ฝ์ด๊ฐ ์๋ค๋ฉด C์ธ์ด์์ C++๊ณผ ๊ฐ์ class์ ํํ์ ์ด๋ ค์ธ ๋ฏ. ๋ฉ๋ชจ๋ฆฌ์ฃผ์๋ก ๊ฐ๋ฅ์ ํ ์๋ ์์ผ๋, ์ฝ๋ ์กฐ์์ ์ด์ ๋ธ๋ฆฌ ์ฐจ์์ผ๋ก ๋ด๋ ค๊ฐ ํ๋ํ๋ ์๋ด์ผํจ... (์ด ๋ต์ด ์๋๋ผ๋ฉด ๋ญํจ)
--์ด์ํธ
ํจ์์ธ์๋ก ๋ช ์์ ์ผ๋ก ํฌ์ธํฐ๋ฅผ ๋๊ฒจ์ฃผ๋์ง ํด์ผ๊ฒ ๋ค ใ ก.ใ ก;; ๊ฒฐ๊ตญ ๋ป์ง์ด๊ตฌ๋ง ใ ใ ใ - eternalbleu