๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

    [Kotlin/์ฝ”ํ‹€๋ฆฐ] Infix ํ•จ์ˆ˜ (Infix notation)

    Infix ๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜ ์‚ฌ์ด์— ์˜ค๋Š” ํ•จ์ˆ˜ ์กฐ๊ฑด ๋ฉค๋ฒ„ ํ•จ์ˆ˜์ด๊ฑฐ๋‚˜ ํ™•์žฅ ํ•จ์ˆ˜์—ฌ์•ผ ํ•จ ํ•˜๋‚˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ ธ์•ผ ํ•จ ๊ธฐ๋ณธ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†์œผ๋ฉฐ varargs ์‚ฌ์šฉ ๋ถˆ๊ฐ€ ์˜ˆ์‹œ 1 infix fun Int.shl(x: Int): Int { ... } // calling the function using the infix notation 1 shl 2 // is the same as 1.shl(2) ์˜ˆ์‹œ 2 fun main() { infix fun Int.times(str: String) = str.repeat(this) // 1 println(2 times "Bye ") // 2 val pair = "Ferrari" to "Katrina" // 3 println(pair) infix fun String.onto(..

    [Kotlin/์ฝ”ํ‹€๋ฆฐ] ํƒ€์ž… ์ฒดํฌ, ์ž๋™ ํ˜•๋ณ€ํ™˜ (Type checks and automatic casts)

    is is ์—ฐ์‚ฐ์ž๋ฅผ ํ†ตํ•ด ํƒ€์ž… ์ฒดํฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ immutable ๋กœ์ปฌ ๋ณ€์ˆ˜(val)์ด๊ฑฐ๋‚˜ property๊ฐ€ ์–ด๋–ค ํƒ€์ž…์ธ์ง€ ํ™•์ธ๋˜์—ˆ๋‹ค๋ฉด ์ž๋™์œผ๋กœ ํ˜• ๋ณ€ํ™˜์ด ์ด๋ค„์ง„๋‹ค. ์˜ˆ์‹œ 1 fun getStringLength(obj: Any): Int? { if (obj is String) { // 'obj' ๊ฐ€ String ํƒ€์ž…์ž„์ด ํ™•์ธ๋จ. // `obj` ๋ฅผ String ํƒ€์ž…์œผ๋กœ ์ž๋™ ํ˜•๋ณ€ํ™˜ return obj.length } // `obj` ๊ฐ€ String ํƒ€์ž…์ด ์•„๋‹ˆ๋ผ๋ฉด ์—ฌ์ „ํžˆ Any ํƒ€์ž… return null } ์˜ˆ์‹œ 2 !is๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. fun getStringLength(obj: Any): Int? { if (obj !is String) return null // `obj` ..

    C++ ์ •๋ฆฌ - 49 (copy(), ostream_iterator, istream_iterator, ๊ธฐํƒ€ ์œ ์šฉํ•œ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋“ค)

    copy(), ostream_iterator, istream_iterator ํ•˜๋‚˜์˜ ์ปจํ…Œ์ด๋„ˆ์—์„œ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๋Š” copy()๋ผ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋“ค๋กœ ํ‘œํ˜„๋œ๋‹ค. ex) int casts[10] = {6,7,2,9,4,11,8,7,10,5}; vector dice[10]; copy(casts,casts+10,dice.begin()); //๋ฐฐ์—ด์„ ๋ฐฑํ„ฐ์— ๋ณต์‚ฌ copy() ํ•จ์ˆ˜๋Š” ๋ชฉ์ ์ง€ ์ปจํ…Œ์ด๋„ˆ์— ์žˆ๋Š” ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ ์œ„์— ์“ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ชฉ์ ์ง€ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ณต์‚ฌ๋˜๋Š” ํ•จ์ˆ˜๋“ค์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ์ถฉ๋ถ„ํžˆ ์ปค์•ผ ํ•œ๋‹ค. STL์€ ostream_iterator ํ…œํ”Œ๋ฆฟ์„ ํ†ตํ•ด ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. iterator ํ—ค๋” ํŒŒ์ผ์„ ํฌํ•จ์‹œํ‚ค๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธํ•จ..

    C++ ์ •๋ฆฌ - 48 (ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์ปจํ…Œ์ด๋„ˆ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ดํ„ฐ๋ ˆ์ดํ„ฐ, ํ•จ์ˆ˜ ๊ฐ์ฒด, vector ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค, Range์— ๊ธฐ์ดˆํ•œ ๋ฃจํ”„(c++11))

    ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(STL; Standard Template Library)๋Š” ์ปจํ…Œ์ด๋„ˆ, ์ดํ„ฐ๋ ˆ์ดํ„ฐ, ํ•จ์ˆ˜ ๊ฐ์ฒด, ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ…œํ”Œ๋ฆฟ๋“ค์˜ ์ง‘ํ•ฉ์„ ์ œ๊ณตํ•œ๋‹ค. ์ปจํ…Œ์ด๋„ˆ๋Š”, ๋ฐฐ์—ด๊ณผ ๊ฐ™์ด, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ๋‹จ์œ„์ด๋‹ค. STL ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฐ™์€ ์ข…๋ฅ˜์˜ ๊ฐ’๋“ค์„ ์ €์žฅํ•œ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜์€, ๋ฐฐ์—ด์„ ์ •๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋ฆฌ์ŠคํŠธ์—์„œ ํŠน์ • ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€, ํŠน๋ณ„ํ•œ ์ž‘์—…๋“ค์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋Š”, ๋ฐฐ์—ด ์•ˆ์—์„œ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์น˜๋ฅผ ์˜ฎ๊ธฐ๋“ฏ์ด, ์ปจํ…Œ์ด๋„ˆ ์•ˆ์—์„œ ์œ„์น˜๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๊ฐ์ฒด๋“ค์ด๋‹ค. ํ•จ์ˆ˜ ๊ฐ์ฒด๋Š” ํ•จ์ˆ˜์™€ ๋น„์Šทํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. ํ•จ์ˆ˜ ๊ฐ์ฒด๋Š” ํด๋ž˜์Šค ๊ฐ์ฒด์ผ ์ˆ˜๋„ ์žˆ๊ณ , ํ•จ์ˆ˜ ํฌ์ธํ„ฐ์ผ ์ˆ˜๋„ ์žˆ๋‹ค. STL์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด, ํ, ๋ฆฌ์ŠคํŠธ์™€..

    C++ ์ •๋ฆฌ - 47 (์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค, auto_ptr ํ…œํ”Œ๋ฆฟ, ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ณ ๋ ค์‚ฌํ•ญ, auto_ptr ๋ณด๋‹ค unique_ptr์ด ๋” ์ข‹์€ ์ด์œ , unique_ptr์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ์„ ํƒ)

    ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ํ…œํ”Œ๋ฆฟ ํด๋ž˜์Šค smart pointer๋Š” ํฌ์ธํ„ฐ์ฒ˜๋Ÿผ ํ–‰๋™ํ•˜๋Š” ํด๋ž˜์Šค ๊ฐ์ฒด์ง€๋งŒ, ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ง€๋‹Œ๋‹ค. ๋™์  ๋ฉ”๋ชจ๋ฆฌ ๋Œ€์ž…์„ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ํ…œํ”Œ๋ฆฟ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ์˜ ์‚ฌ์šฉ 3๊ฐœ์˜ ์Šค๋งˆํŠธ ํ…œํ”Œ๋ฆฟ (auto_ptr, unique_ptr, shared_ptr)์€ ๊ฐ๊ฐ new๋ฅผ ํ†ตํ•ด ์–ป์–ด์ง€๋Š” ์ฃผ์†Œ๋ฅผ ๋Œ€์ž…ํ•  ํฌ์ธํ„ฐ๋ฅผ ์ •์˜ํ•œ๋‹ค. ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ๊ฐ€ ์ˆ˜๋ช…์„ ๋‹คํ–ˆ์„ ๋•Œ, ํŒŒ๊ดด์ž๋Š” delete๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋งŒ์ผ new๊ฐ€ ๋ฆฌํ„ดํ•˜๋Š” ์ฃผ์†Œ๋ฅผ ์œ„ ์„ธ ๊ฐœ์˜ ๊ฐ์ฒด ์ค‘ ํ•˜๋‚˜์— ๋Œ€์ž…ํ•˜๊ฒŒ ๋˜๋ฉด, ๋‚˜์ค‘์— ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ•ด์ œํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ฐ์ฒด๊ฐ€ ์ˆ˜๋ช…์ด ๋‹คํ–ˆ์„ ๋•Œ, ์ž๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•ด์ œ๋œ๋‹ค. ์ด๋Ÿฌํ•œ ์Šค๋งˆํŠธ ํฌ์ธํ„ฐ ๊ฐ์ฒด๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ…œํ”Œ๋ฆฟ์„ ..

    C++ ์ •๋ฆฌ - 46 (string : c++11 ์ƒ์„ฑ์ž๋“ค, string ํด๋ž˜์Šค ์ž…๋ ฅ, ๋ฌธ์ž์—ด ์ž‘์—…, ์˜ค๋ฒ„ ๋กœ๋”ฉ๋œ find() ๋ฉ”์„œ๋“œ)

    -string : c++11 ์ƒ์„ฑ์ž๋“ค string(string && str) noexcept ์ƒ์„ฑ์ž๋Š” str์ด ๋ฐ˜๋“œ์‹œ const๋กœ ์ทจ๊ธ‰๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํ˜•ํƒœ์˜ ์ƒ์„ฑ์ž๋ฅผ ์ด๋™ ์ƒ์„ฑ์ž๋ผ ํ•œ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๋ณต์‚ฌ ์ƒ์„ฑ์ž ๋Œ€์‹ ์— ์ด๋™ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. string(initializer_list il) ์ƒ์„ฑ์ž๋Š” string ํด๋ž˜์Šค์˜ ๋ฆฌ์ŠคํŠธ ์ดˆ๊ธฐํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ๋‹ค. string piano_man = {'L','i','s','z','t'}; string ํด๋ž˜์Šค ์ž…๋ ฅ c์Šคํƒ€์ผ์˜ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด์„œ๋Š” ์„ธ ๊ฐ€์ง€ ์ž…๋ ฅ ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. char info[100]; cin>>info; //ํ•œ ๋‹จ์–ด๋ฅผ ์ฝ๋Š”๋‹ค. cin.getline(info,100); //ํ•œ ํ–‰์„ ์ฝ๋˜, \n์€ ๋‚ด๋ฒ„๋ฆฐ๋‹ค. cin.g..

    C++ ์ •๋ฆฌ - 45 (RTTI, dynamic_cast ์—ฐ์‚ฐ์ž, typeid ์—ฐ์‚ฐ์ž์™€ type_info ํด๋ž˜์Šค, ๋ฐ์ดํ„ฐํ˜• ๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž, string ํด๋ž˜์Šค)

    RTTI RTTI๋Š” 'runtime type identification'์˜ ์•ฝ์ž๋กœ, ์‹คํ–‰ ์‹œ๊ฐ„ ๋ฐ์ดํ„ฐํ˜• ์ •๋ณด๋ผ๋Š” ๋œป์ด๋‹ค. RTTI์˜ ๋ชฉ์ ์€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ๋„์ค‘์— ๊ฐ์ฒด์˜ ๋ฐ์ดํ„ฐํ˜•์„ ๊ฒฐ์ •ํ•˜๋Š” ํ‘œ์ค€ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด๋‹ค. RTTI์˜ ๋™์ž‘ ๋ฐฉ์‹ c++๋Š” RTTI๋ฅผ ์ง€์›ํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ์š”์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. dynamic_cast ์—ฐ์‚ฐ์ž๋Š”, ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ๊ธฐ์ดˆ ํด๋ž˜์Šคํ˜•์„ ์ง€์‹œํ•˜๋Š” ํฌ์ธํ„ฐ๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ ํด๋ž˜์Šคํ˜•์„ ์ง€์‹œํ•˜๋Š” ํฌ์ธํ„ฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‹ค๋ฉด, ๋„ ํฌ์ธํ„ฐ์ธ 0์„ ๋ฆฌํ„ดํ•œ๋‹ค. typeid ์—ฐ์‚ฐ์ž๋Š” ์–ด๋–ค ๊ฐ์ฒด์˜ ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐํ˜•์„ ์‹๋ณ„ํ•˜๋Š” ํ•˜๋‚˜์˜ ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. type_info ๊ตฌ์กฐ์ฒด๋Š” ์–ด๋–ค ํŠน๋ณ„ํ•œ ๋ฐ์ดํ„ฐํ˜•์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•œ๋‹ค. RTTI๋Š” ๊ฐ€์ƒ ํ•จ์ˆ˜๋“ค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค์— ๋Œ€ํ•ด์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. -dyn..

    C++ ์ •๋ฆฌ - 44 (exception ํด๋ž˜์Šค, stdexcept ์˜ˆ์™ธ ํด๋ž˜์Šค, bad_alloc ์˜ˆ์™ธ์™€ new, ์˜ˆ์™ธ, ํด๋ž˜์Šค, ์ƒ์†, ์ž˜๋ชป๋œ ์˜ˆ์™ธ)

    exception ํด๋ž˜์Šค c++ ์˜ˆ์™ธ๋“ค์˜ ์ฃผ๋ชฉ์ ์€, ์˜ค๋™์ž‘์„ ๋ฐฉ์ง€ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์„ค๊ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์–ธ์–ด ์ฐจ์›์—์„œ ์ž์›ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ตœ์‹  c++ ์ปดํŒŒ์ผ๋Ÿฌ๋“ค์€ ์–ธ์–ด ์ž์ฒด์— ์˜ˆ์™ธ๋“ค์„ ํฌํ•จ์‹œํ‚ค๊ณ  ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, exception ํ—ค๋” ํŒŒ์ผ์€ ๋‹ค๋ฅธ ์˜ˆ์™ธ ํด๋ž˜์Šค๋“ค์˜ ๊ธฐ์ดˆ ํด๋ž˜์Šค๋กœ ์‚ฌ์šฉํ•˜๋Š” exception ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค. ๋˜ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ๋Š” exception ๊ฐ์ฒด๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๊ฑฐ๋‚˜, exception ํด๋ž˜์Šค๋ฅผ ๊ธฐ์ดˆ ํด๋ž˜์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. what()์ด๋ผ๋Š” ํ•˜๋‚˜์˜ ๊ฐ€์ƒ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๊ฒƒ์€ ์‹œ์Šคํ…œ์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ด ๋ฉ”์„œ๋“œ๋Š” ๊ฐ€์ƒ์ด๊ธฐ ๋•Œ๋ฌธ์—, exception ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ ํด๋ž˜์Šค ์•ˆ์—์„œ ์žฌ์ •์˜ ํ•  ์ˆ˜ ์žˆ๋‹ค. #include class bad_hmea..

    C++ ์ •๋ฆฌ - 43 (abort() ํ˜ธ์ถœ, ์˜ˆ์™ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜, ์˜ˆ์™ธ๋กœ ๊ฐ์ฒด ์‚ฌ์šฉํ•˜๊ธฐ, c++11์—์„œ์˜ ์˜ˆ์™ธ ๊ทœ๊ฒฉ, ์Šคํƒ ํ’€๊ธฐ, ์˜ˆ์™ธ์˜ ๊ทธ ๋ฐ–์˜ ๊ธฐ๋Šฅ)

    ์˜ˆ์™ธ abort() ํ˜ธ์ถœ ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋ถ€์ •์ด๋ฉด, ๊ทธ ํ•จ์ˆ˜๊ฐ€ abort() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด๋‹ค. abort() ํ•จ์ˆ˜์˜ ์›ํ˜•์€ cstdlib(๋˜๋Š” stdlib.h) ํ—ค๋” ํŒŒ์ผ์— ๋“ค์–ด์žˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ abort() ํ•จ์ˆ˜๋Š”, ํ˜ธ์ถœ๋˜์—ˆ์„ ๋•Œ ํ‘œ์ค€ ์—๋Ÿฌ ์ŠคํŠธ๋ฆผ (cerr๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ŠคํŠธ๋ฆผ)์— ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ์‹œํ‚ค๋„๋ก ๊ตฌํ˜„๋˜์–ด ์žˆ๋‹ค. ๋˜ํ•œ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ•ด ๊ธฐ๋™ ๋œ ๊ฒฝ์šฐ, ๊ทธ ํ”„๋กœ๊ทธ๋žจ์˜ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค๋‚˜ ์šด์˜์ฒด์ œ์— ์ปดํŒŒ์ผ๋Ÿฌ์— ์ข…์†์ ์ธ ์–ด๋–ค ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค. ์ด๋•Œ abort()๊ฐ€ ํŒŒ์ผ ๋ฒ„ํผ๋ฅผ ๋น„์šฐ๋Š”์ง€ ์—ฌ๋ถ€๋Š” c++ ์‹œ์Šคํ…œ๋งˆ๋‹ค ๋‹ค๋ฅด๋‹ค. ์›ํ•œ๋‹ค๋ฉด exit()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜์ง€ ์•Š๊ณ , ํŒŒ์ผ ๋ฒ„ํผ๋งŒ ์ง€์šธ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์™ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ..

    C++ ์ •๋ฆฌ - 42 (ํ”„๋ Œ๋“œ ํด๋ž˜์Šค, ํ”„๋ Œ๋“œ ๋ฉค๋ฒ„ ํ•จ์ˆ˜, ๋‚ดํฌ ํด๋ž˜์Šค)

    ํ”„๋ Œ๋“œ ํด๋ž˜์Šค ๋‹ค์Œ ๊ตฌ๋ฌธ์€ Remote๋ฅผ ํ”„๋ Œ๋“œ ํด๋ž˜์Šค๋กœ ๋งŒ๋“ ๋‹ค. friend class Remote; ํ”„๋ Œ๋“œ ์„ ์–ธ์€ public, private, protected ๋ถ€๋ถ„ ์–ด๋””์—๋‚˜ ๋‘˜ ์ˆ˜ ์žˆ๋‹ค. ํ”„๋ Œ๋“œ ๋ฉค๋ฒ„ ํ•จ์ˆ˜ ํด๋ž˜์Šค ์ „์ฒด๋ฅผ ํ”„๋ Œ๋“œ๋กœ ๋งŒ๋“œ๋Š” ๋Œ€์‹ , ์›ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋“ค๋งŒ ๋‹ค๋ฅธ ํด๋ž˜์Šค์— ๋Œ€ํ•ด ํ”„๋ Œ๋“œ๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Remote::set_chan()์„ Tv ํด๋ž˜์Šค์— ๋Œ€ํ•ด ํ”„๋ Œ๋“œ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€, Tv ํด๋ž˜์Šค ์„ ์–ธ ์•ˆ์— ๊ทธ๊ฒƒ์„ ํ”„๋ Œ๋“œ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฒƒ. class Tv { friend void Remote::set_chan(Tv &t,int c); ... } ๊ทธ๋Ÿฌ๋‚˜ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ด ๊ตฌ๋ฌธ์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด Remote ์ •์˜๋ฅผ ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์‚ฌ์ „ ์„ ์–ธ์„ ์‚ฌ์šฉํ•ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. class Tv; ..