E D R , A S I H C RSS

Object Programming InC

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
{
int attrib;
void (*method1)(int);
}testClass; --์ด์˜ํ˜ธ
----
์—ฌ๊ธฐ์„œ 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
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:53
Processing time 0.0041 sec