<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>JW</title>
    <link>https://wlsn3999.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Fri, 15 May 2026 02:30:48 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>wlsn</managingEditor>
    <item>
      <title>클라우드 기초 15주차</title>
      <link>https://wlsn3999.tistory.com/80</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;IT 인프라 관련 기술 &lt;br /&gt;하드웨어 &lt;br /&gt;운영체제 &lt;br /&gt;가상화기술 &lt;br /&gt;네트워크 &lt;br /&gt;클라우드 &lt;br /&gt;&lt;br /&gt;직렬/병렬 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;서버&amp;nbsp;내부에서의&amp;nbsp;처리 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;멀티&amp;nbsp;프로세스&amp;nbsp;:&amp;nbsp;다수의&amp;nbsp;웹서버&amp;nbsp;데몬(httpd)을&amp;nbsp;실행 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;멀티&amp;nbsp;스레드&amp;nbsp;:&amp;nbsp;하나의&amp;nbsp;프로세스&amp;nbsp;안에&amp;nbsp;다수의&amp;nbsp;스레드를&amp;nbsp;이용해&amp;nbsp;병렬화 &lt;br /&gt;프로세스(독립적)/스레드(할당받아서&amp;nbsp;사용함) &lt;br /&gt;작업관리자에서&amp;nbsp;하나를&amp;nbsp;껐을&amp;nbsp;때&amp;nbsp;하나만&amp;nbsp;꺼지는&amp;nbsp;것이&amp;nbsp;프로세스 &lt;br /&gt;메모리를&amp;nbsp;공유해&amp;nbsp;하나를&amp;nbsp;껐을&amp;nbsp;때&amp;nbsp;다같이&amp;nbsp;꺼지는&amp;nbsp;것이&amp;nbsp;스레드 &lt;br /&gt;&lt;br /&gt;동기/비동기 &lt;br /&gt;&amp;bull;&amp;nbsp;동기&amp;nbsp;처리 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;서버가&amp;nbsp;일을&amp;nbsp;마칠때까지&amp;nbsp;기다림 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;설계가&amp;nbsp;간단하고&amp;nbsp;직관적 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;결과가&amp;nbsp;있을&amp;nbsp;때까지&amp;nbsp;아무것도&amp;nbsp;못하고&amp;nbsp;대기 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;(예)&amp;nbsp;웹페이지를&amp;nbsp;새로고침 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;비동기&amp;nbsp;처리 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;서버에게&amp;nbsp;일을&amp;nbsp;맡기고&amp;nbsp;다른&amp;nbsp;일을&amp;nbsp;하고&amp;nbsp;때가&amp;nbsp;되면&amp;nbsp;응답&amp;nbsp;받음 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;동기보다&amp;nbsp;복잡 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;자원을&amp;nbsp;효율적으로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있음 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;(예)&amp;nbsp;웹페이지&amp;nbsp;새로고침&amp;nbsp;하지&amp;nbsp;않고&amp;nbsp;데이터&amp;nbsp;로드(댓글&amp;nbsp;영역만&amp;nbsp;업데이트) &lt;br /&gt;&lt;br /&gt;큐 &lt;br /&gt;&amp;bull;&amp;nbsp;Queue(큐)&amp;nbsp;:&amp;nbsp;대기&amp;nbsp;행렬로서&amp;nbsp;FIFO(First-In-First-Out)&amp;nbsp;구조를&amp;nbsp;가짐 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;사용&amp;nbsp;사례 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;CPU&amp;nbsp;처리를&amp;nbsp;기다리고&amp;nbsp;있는&amp;nbsp;프로세스나&amp;nbsp;스레드&amp;nbsp;행렬 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;프린터&amp;nbsp;출력을&amp;nbsp;위한&amp;nbsp;대기열 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;네트워크의&amp;nbsp;품질(QoS)을&amp;nbsp;높이기&amp;nbsp;위해&amp;nbsp;우선순위&amp;nbsp;큐&amp;nbsp;사용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;cf)&amp;nbsp;Stack(스택)&amp;nbsp;:&amp;nbsp;Last-In-First-Out&amp;nbsp;구조 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;연결&amp;nbsp;리스트 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;크기가&amp;nbsp;가변적 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;메모리&amp;nbsp;공간에&amp;nbsp;불연속적으로&amp;nbsp;데이터&amp;nbsp;저장 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;다음&amp;nbsp;항목의&amp;nbsp;주소를&amp;nbsp;저장&amp;nbsp;&amp;amp;&amp;nbsp;선으로&amp;nbsp;연결한&amp;nbsp;구조 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;탐색은&amp;nbsp;느리나,&amp;nbsp;데이터&amp;nbsp;추가,&amp;nbsp;삭제가&amp;nbsp;빠름 &lt;br /&gt;메모리&amp;nbsp;관점에서&amp;nbsp;찾아봐야한다. &lt;br /&gt;&lt;br /&gt;캐시 &lt;br /&gt;&amp;bull;&amp;nbsp;캐시 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;사용&amp;nbsp;빈도가&amp;nbsp;높은&amp;nbsp;데이터를&amp;nbsp;고속으로&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;조치하는&amp;nbsp;것 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;브라우저에서&amp;nbsp;요청한&amp;nbsp;페이지가&amp;nbsp;먼저&amp;nbsp;캐시에&amp;nbsp;저장되어&amp;nbsp;있는지&amp;nbsp;확인 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;캐시에&amp;nbsp;있으면&amp;nbsp;빠른&amp;nbsp;응답(cache&amp;nbsp;hit) &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;캐시에&amp;nbsp;없으면&amp;nbsp;메모리로부터&amp;nbsp;데이터를&amp;nbsp;가져오고&amp;nbsp;재사용을&amp;nbsp;위해&amp;nbsp;캐시에&amp;nbsp;저장(cache&amp;nbsp;miss) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;보통&amp;nbsp;CPU와&amp;nbsp;메모리&amp;nbsp;사이의&amp;nbsp;속도를&amp;nbsp;조절하기&amp;nbsp;위해&amp;nbsp;사용하나, &lt;br /&gt;웹서비스에서&amp;nbsp;브라우저와&amp;nbsp;웹서버&amp;nbsp;간의&amp;nbsp;속도를&amp;nbsp;조절할&amp;nbsp;때도&amp;nbsp;사용 &lt;br /&gt;&lt;br /&gt;레지스터&amp;nbsp;-&amp;gt;&amp;nbsp;캐시&amp;nbsp;-&amp;gt;&amp;nbsp;메모리&amp;nbsp;-&amp;gt;&amp;nbsp;하드디스크 &lt;br /&gt;&lt;br /&gt;베타적&amp;nbsp;제어 &lt;br /&gt;&amp;bull;&amp;nbsp;병렬처리&amp;nbsp;환경에서&amp;nbsp;하나의&amp;nbsp;자원을&amp;nbsp;공유하는&amp;nbsp;상황에&amp;nbsp;발생 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;공유자원(CPU,&amp;nbsp;메모리&amp;nbsp;등)에&amp;nbsp;동시&amp;nbsp;접근&amp;nbsp;시&amp;nbsp;장애&amp;nbsp;발생 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;배타적&amp;nbsp;제어&amp;nbsp;처리&amp;nbsp;부분은&amp;nbsp;병목현상&amp;nbsp;발생 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;두&amp;nbsp;개&amp;nbsp;이상의&amp;nbsp;프로세스/스레드가&amp;nbsp;공유자원에&amp;nbsp;동시에&amp;nbsp;접근&amp;nbsp;불가 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;사례 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;DMBS에&amp;nbsp;사용되는&amp;nbsp;배타적&amp;nbsp;제어 &lt;br /&gt;With&amp;nbsp;배타적&amp;nbsp;제어&amp;nbsp;공유&amp;nbsp;데이터를&amp;nbsp;일관성&amp;nbsp;있게&amp;nbsp;유지(장점)&amp;nbsp;/&amp;nbsp;병렬&amp;nbsp;처리&amp;nbsp;불가(단점) &lt;br /&gt;W/O&amp;nbsp;배타적&amp;nbsp;제어&amp;nbsp;병렬처리로&amp;nbsp;빠르게&amp;nbsp;처리(장점)&amp;nbsp;/&amp;nbsp;데이터&amp;nbsp;불일치&amp;nbsp;발생(공유&amp;nbsp;데이터&amp;nbsp;동시&amp;nbsp;접속)(단점) &lt;br /&gt;&lt;br /&gt;인터럽트 &lt;br /&gt;&amp;bull;&amp;nbsp;프로세스&amp;nbsp;실행&amp;nbsp;중&amp;nbsp;예상하지&amp;nbsp;못한&amp;nbsp;상황이&amp;nbsp;발생했을&amp;nbsp;때,&amp;nbsp;그&amp;nbsp;일을&amp;nbsp;먼저&amp;nbsp;처리&amp;nbsp;후&amp;nbsp;원래&amp;nbsp;작업으로&amp;nbsp;복귀 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;외부&amp;nbsp;인터럽트 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;입출력&amp;nbsp;장치&amp;nbsp;:&amp;nbsp;키보드,&amp;nbsp;마우스와&amp;nbsp;같은&amp;nbsp;입출력&amp;nbsp;장치의&amp;nbsp;입력&amp;nbsp;처리 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;타이머&amp;nbsp;:&amp;nbsp;일정&amp;nbsp;시간&amp;nbsp;간격으로&amp;nbsp;CPU에&amp;nbsp;인터럽트&amp;nbsp;요청 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;내부&amp;nbsp;인터럽트 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;하드웨어의&amp;nbsp;고장(0으로&amp;nbsp;나누기) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;실행할&amp;nbsp;수&amp;nbsp;없는&amp;nbsp;명령어 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;명령어&amp;nbsp;실행&amp;nbsp;오류 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;사용&amp;nbsp;권한&amp;nbsp;위배 &lt;br /&gt;&lt;br /&gt;폴링 &lt;br /&gt;&amp;bull;&amp;nbsp;일정한&amp;nbsp;주기로&amp;nbsp;서버와&amp;nbsp;응답을&amp;nbsp;주고&amp;nbsp;받는&amp;nbsp;방식 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;HTTP는&amp;nbsp;지속적&amp;nbsp;연결(Persistent&amp;nbsp;Connection)이&amp;nbsp;불가능,&amp;nbsp;주기적으로&amp;nbsp;서버에&amp;nbsp;요청을&amp;nbsp;보내&amp;nbsp;업데이트! &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;폴링의&amp;nbsp;주기가&amp;nbsp;짧으면&amp;nbsp;서버에&amp;nbsp;오버헤드(부담)&amp;nbsp;증가,&amp;nbsp;주기가&amp;nbsp;길면&amp;nbsp;실시간성이&amp;nbsp;떨어짐 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;cf)&amp;nbsp;웹훅&amp;nbsp;:&amp;nbsp;서버에서&amp;nbsp;어떠한&amp;nbsp;작업이&amp;nbsp;수행되었을&amp;nbsp;때&amp;nbsp;해당&amp;nbsp;작업이&amp;nbsp;발생했다고&amp;nbsp;HTTP&amp;nbsp;POST&amp;nbsp;방식으로&amp;nbsp;알림 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;(예)&amp;nbsp;특정&amp;nbsp;이벤트(사용자&amp;nbsp;로그인)가&amp;nbsp;발생했을&amp;nbsp;때&amp;nbsp;알림 &lt;br /&gt;&lt;br /&gt;가용성&amp;nbsp;향상(이중화) &lt;br /&gt;&amp;bull;&amp;nbsp;이중화란? &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;시스템의&amp;nbsp;장애를&amp;nbsp;대비하는&amp;nbsp;등&amp;nbsp;안정성을&amp;nbsp;강화하기&amp;nbsp;위해&amp;nbsp;같은&amp;nbsp;시스템을&amp;nbsp;두&amp;nbsp;개&amp;nbsp;이상&amp;nbsp;설치하고,&amp;nbsp;시스템&amp;nbsp;장애&amp;nbsp;발생시&amp;nbsp;정상&amp;nbsp;시스템으로&amp;nbsp;전환하도록&amp;nbsp;만든&amp;nbsp;구조 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;안정성 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;시스템이&amp;nbsp;일정한&amp;nbsp;시간동안&amp;nbsp;오류&amp;nbsp;없이&amp;nbsp;동작하는&amp;nbsp;능력&amp;nbsp;=&amp;nbsp;고가용성(High&amp;nbsp;Availability) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;가용성(Availability)&amp;nbsp;:&amp;nbsp;시스템이&amp;nbsp;서비스를&amp;nbsp;요청&amp;nbsp;받았을&amp;nbsp;때,&amp;nbsp;서비스를&amp;nbsp;제공할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;능력 &lt;br /&gt;&lt;br /&gt;이중화&amp;nbsp;대상 &lt;br /&gt;&amp;bull;&amp;nbsp;전원,&amp;nbsp;장치&amp;nbsp;등의&amp;nbsp;이중화 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;독립적으로&amp;nbsp;운영되는&amp;nbsp;복수의&amp;nbsp;전원&amp;nbsp;탭&amp;nbsp;연결,&amp;nbsp;UPS(정전&amp;nbsp;시에&amp;nbsp;애용하는&amp;nbsp;대규모&amp;nbsp;충전지)&amp;nbsp;활용 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;(WEB/WAS)&amp;nbsp;서버&amp;nbsp;이중화 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;물리적&amp;nbsp;서버나&amp;nbsp;가상&amp;nbsp;서버를&amp;nbsp;복수로&amp;nbsp;구성하여&amp;nbsp;한&amp;nbsp;서버가&amp;nbsp;장애가&amp;nbsp;발생하더라도&amp;nbsp;다른&amp;nbsp;서버가&amp;nbsp;서비스&amp;nbsp;제공 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;네트워크&amp;nbsp;이중화 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;네트워크&amp;nbsp;인터페이스&amp;nbsp;카드(NIC)를&amp;nbsp;이중화&amp;nbsp;하여&amp;nbsp;카드&amp;nbsp;장애&amp;nbsp;및&amp;nbsp;포트&amp;nbsp;장애에&amp;nbsp;대응 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;네트워크&amp;nbsp;장비의&amp;nbsp;장애를&amp;nbsp;대비한&amp;nbsp;이중화&amp;nbsp;(예)&amp;nbsp;같은&amp;nbsp;일을&amp;nbsp;하는&amp;nbsp;L2&amp;nbsp;혹은&amp;nbsp;L3&amp;nbsp;스위치&amp;nbsp;2개&amp;nbsp;연결 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;저장소&amp;nbsp;이중화 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;HDD&amp;nbsp;이중화&amp;nbsp;혹은&amp;nbsp;RAID&amp;nbsp;구성을&amp;nbsp;통해&amp;nbsp;디스크&amp;nbsp;이중화 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;데이터&amp;nbsp;센터&amp;nbsp;이중화 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;자연&amp;nbsp;재해를&amp;nbsp;대비해&amp;nbsp;데이터&amp;nbsp;센터&amp;nbsp;자체를&amp;nbsp;이중화 &lt;br /&gt;&lt;br /&gt;이중화&amp;nbsp;구현&amp;nbsp;기술 &lt;br /&gt;&amp;bull;&amp;nbsp;로드&amp;nbsp;밸런싱 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;L4&amp;nbsp;스위치&amp;nbsp;등을&amp;nbsp;이용해&amp;nbsp;트래픽을&amp;nbsp;여러&amp;nbsp;서버에&amp;nbsp;분산 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;클러스터링 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;여러&amp;nbsp;서버를&amp;nbsp;하나의&amp;nbsp;시스템처럼&amp;nbsp;동작하게&amp;nbsp;만드는&amp;nbsp;기술 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;데이터&amp;nbsp;복제 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;Active&amp;nbsp;서버와&amp;nbsp;Standby&amp;nbsp;서버&amp;nbsp;간의&amp;nbsp;데이터&amp;nbsp;동기화 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;하트비트(Heartbeat)&amp;nbsp;모니터링 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;시스템이&amp;nbsp;살아있는지&amp;nbsp;확인 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;서버들&amp;nbsp;간에&amp;nbsp;주기적으로&amp;nbsp;상태를&amp;nbsp;확인하여&amp;nbsp;장애&amp;nbsp;감지 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;(예)&amp;nbsp;에이전트가&amp;nbsp;60초&amp;nbsp;간격으로&amp;nbsp;하트비트&amp;nbsp;메시지&amp;nbsp;전송,&amp;nbsp;정해진&amp;nbsp;시간에&amp;nbsp;하트비트&amp;nbsp;메시지가&amp;nbsp;오지&amp;nbsp;않으면&amp;nbsp;경고&amp;nbsp;및&amp;nbsp;추가&amp;nbsp;조치 &lt;br /&gt;&lt;br /&gt;성능향상 &lt;br /&gt;&amp;bull;&amp;nbsp;성능&amp;nbsp;문제의&amp;nbsp;원인&amp;nbsp;:&amp;nbsp;응답속도,&amp;nbsp;처리량 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;응답속도(Response)&amp;nbsp;:&amp;nbsp;서비스&amp;nbsp;요청에&amp;nbsp;대한&amp;nbsp;응답&amp;nbsp;속도&amp;nbsp;(예)&amp;nbsp;버퍼링 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;응답&amp;nbsp;지연이&amp;nbsp;발생&amp;nbsp;지점&amp;nbsp;확인 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;네트워크&amp;nbsp;성능&amp;nbsp;확인 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;처리량(Throughput)&amp;nbsp;:&amp;nbsp;단위&amp;nbsp;시간&amp;nbsp;당&amp;nbsp;처리된&amp;nbsp;데이터의&amp;nbsp;양&amp;nbsp;(예)&amp;nbsp;bps,&amp;nbsp;Mbps &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;컴퓨팅&amp;nbsp;리소스(CPU,&amp;nbsp;메모리&amp;nbsp;등)의&amp;nbsp;처리&amp;nbsp;능력&amp;nbsp;확인 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;네트워크&amp;nbsp;대역폭&amp;nbsp;확인 &lt;br /&gt;&amp;bull;&amp;nbsp;병목현상(bottleneck)&amp;nbsp;:&amp;nbsp;병의&amp;nbsp;목이&amp;nbsp;좁아&amp;nbsp;흐르는&amp;nbsp;수량이&amp;nbsp;제한되는&amp;nbsp;성질 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;해결&amp;nbsp;:&amp;nbsp;원인을&amp;nbsp;파악해&amp;nbsp;시스템&amp;nbsp;성능을&amp;nbsp;높이거나(Scale&amp;nbsp;Up)&amp;nbsp;병렬&amp;nbsp;처리할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;수를&amp;nbsp;늘림(Scale&amp;nbsp;Out) &lt;br /&gt;&lt;br /&gt;위치별&amp;nbsp;병목현상 &lt;br /&gt;&amp;bull;&amp;nbsp;CPU&amp;nbsp;병목&amp;nbsp;현상 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;CPU를&amp;nbsp;이용하기&amp;nbsp;위해&amp;nbsp;대기&amp;nbsp;행렬이&amp;nbsp;발생(큐에&amp;nbsp;데이터가&amp;nbsp;쌓임) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;CPU&amp;nbsp;응답이&amp;nbsp;느림 &lt;br /&gt;&amp;nbsp;&amp;nbsp;※&amp;nbsp;CPU&amp;nbsp;사용률이&amp;nbsp;100%라고&amp;nbsp;해서&amp;nbsp;병목현상이&amp;nbsp;발생한다는&amp;nbsp;것은&amp;nbsp;아님 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;메모리&amp;nbsp;병목&amp;nbsp;현상 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;메모리&amp;nbsp;영역&amp;nbsp;고갈 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;동일&amp;nbsp;영역의&amp;nbsp;경합(공유&amp;nbsp;메모리에&amp;nbsp;다수가&amp;nbsp;접근) &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;디스크&amp;nbsp;I/O&amp;nbsp;병목현상 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;HDD에&amp;nbsp;읽기/쓰기&amp;nbsp;과정에서의&amp;nbsp;병목 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;네트워크&amp;nbsp;I/O&amp;nbsp;병목현상 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;모든&amp;nbsp;트래픽을&amp;nbsp;한&amp;nbsp;개의&amp;nbsp;게이트웨이에서&amp;nbsp;처리하면서&amp;nbsp;병목 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;애플리케이션&amp;nbsp;병목현상 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;알고리즘의&amp;nbsp;문제로&amp;nbsp;처리량&amp;nbsp;혹은&amp;nbsp;응답속도가&amp;nbsp;낮음 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;비효율적인&amp;nbsp;데이터베이스&amp;nbsp;접근 &lt;br /&gt;&lt;br /&gt;클라우드&amp;nbsp;컴퓨팅의&amp;nbsp;탄생 &lt;br /&gt;&amp;bull;&amp;nbsp;물리&amp;nbsp;서버를&amp;nbsp;사용하면서&amp;nbsp;비효율&amp;nbsp;발생으로&amp;nbsp;가상화&amp;nbsp;기술&amp;nbsp;탄생 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;자원(비용)의&amp;nbsp;비효율 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;하나의&amp;nbsp;서버에서는&amp;nbsp;하나의&amp;nbsp;운영체제와&amp;nbsp;애플리케이션을&amp;nbsp;설치/운용 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;하드웨어는&amp;nbsp;급속히&amp;nbsp;발전함에&amp;nbsp;따라&amp;nbsp;소프트웨어&amp;nbsp;요구사항을&amp;nbsp;상회 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;물리&amp;nbsp;서버&amp;nbsp;자원을&amp;nbsp;효율적으로&amp;nbsp;활용하기&amp;nbsp;위한&amp;nbsp;요구&amp;nbsp;등장 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(예)&amp;nbsp;자원활용도가&amp;nbsp;너무&amp;nbsp;낮더라도&amp;nbsp;별도의&amp;nbsp;서버&amp;nbsp;구축&amp;nbsp;&amp;rarr;&amp;nbsp;가상화를&amp;nbsp;통해&amp;nbsp;자원&amp;nbsp;분배 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;확장성 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;비정기적인&amp;nbsp;트래픽(수강신청&amp;nbsp;등)에&amp;nbsp;대비하기&amp;nbsp;위해&amp;nbsp;충분한&amp;nbsp;서버&amp;nbsp;구축&amp;nbsp;필요 &lt;br /&gt;&amp;nbsp;&amp;nbsp;➔&amp;nbsp;서버의&amp;nbsp;확장&amp;nbsp;및&amp;nbsp;축소에&amp;nbsp;리소스가&amp;nbsp;많이&amp;nbsp;투입됨&amp;nbsp;(예)&amp;nbsp;서버&amp;nbsp;구입,&amp;nbsp;환경&amp;nbsp;구성(인터넷&amp;nbsp;연결,&amp;nbsp;OS/app&amp;nbsp;설치&amp;nbsp;등) &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;유지보수 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;서버&amp;nbsp;장애시&amp;nbsp;서버&amp;nbsp;교체를&amp;nbsp;위해,&amp;nbsp;서버를&amp;nbsp;OFF&amp;nbsp;하고&amp;nbsp;교체하면&amp;nbsp;서비스&amp;nbsp;중단&amp;nbsp;발생 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;가상화&amp;nbsp;기술의&amp;nbsp;등장으로&amp;nbsp;자원을&amp;nbsp;효율적으로&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;됨 &lt;br /&gt;&lt;br /&gt;가상화&amp;nbsp;기술 &lt;br /&gt;&amp;bull;&amp;nbsp;가상화(Virtualization) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;하드웨어&amp;nbsp;리소스(CPU,&amp;nbsp;메모리,&amp;nbsp;스토리지)를&amp;nbsp;논리적으로&amp;nbsp;다루는&amp;nbsp;기술 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;서버&amp;nbsp;가상화,&amp;nbsp;네트워크&amp;nbsp;가상화,&amp;nbsp;스토리지&amp;nbsp;가상화 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;서버&amp;nbsp;가상화&amp;nbsp;장점 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;물리&amp;nbsp;서버&amp;nbsp;하나의&amp;nbsp;리소스를&amp;nbsp;여러&amp;nbsp;개의&amp;nbsp;서버&amp;nbsp;환경으로&amp;nbsp;할당&amp;nbsp;&amp;rarr;&amp;nbsp;각각&amp;nbsp;OS&amp;nbsp;및&amp;nbsp;app&amp;nbsp;실행 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;물리&amp;nbsp;서버&amp;nbsp;수를&amp;nbsp;줄여&amp;nbsp;공간&amp;nbsp;절약&amp;nbsp;및&amp;nbsp;비용&amp;nbsp;절감 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;가상&amp;nbsp;서버&amp;nbsp;중&amp;nbsp;하나가&amp;nbsp;장애(바이러스&amp;nbsp;등)가&amp;nbsp;발생하더라도&amp;nbsp;다른&amp;nbsp;가상&amp;nbsp;서버에&amp;nbsp;영향&amp;nbsp;X &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;서버&amp;nbsp;가상화&amp;nbsp;기술 &lt;br /&gt;하이퍼바이저형 &lt;br /&gt;APP&amp;nbsp;/&amp;nbsp;APP &lt;br /&gt;게스트OS&amp;nbsp;/&amp;nbsp;게스트&amp;nbsp;OS &lt;br /&gt;하이퍼바이저 &lt;br /&gt;하드웨어 &lt;br /&gt;&lt;br /&gt;호스트&amp;nbsp;OS형 &lt;br /&gt;APP&amp;nbsp;/&amp;nbsp;APP &lt;br /&gt;게스트OS&amp;nbsp;/&amp;nbsp;게스트OS &lt;br /&gt;호스트&amp;nbsp;형&amp;nbsp;가상화&amp;nbsp;소프트웨어 &lt;br /&gt;호스트OS &lt;br /&gt;하드웨어 &lt;br /&gt;&lt;br /&gt;컨테이너형 &lt;br /&gt;APP&amp;nbsp;/&amp;nbsp;APP &lt;br /&gt;실행환경&amp;nbsp;/&amp;nbsp;실행환경 &lt;br /&gt;컨테이너&amp;nbsp;관리&amp;nbsp;소프트웨어 &lt;br /&gt;호스트OS &lt;br /&gt;하드웨어 &lt;br /&gt;&lt;br /&gt;하이퍼바이저형은&amp;nbsp;호스트OS가&amp;nbsp;없고&amp;nbsp;호스트OS,&amp;nbsp;컨테이너형은&amp;nbsp;호스트OS가&amp;nbsp;깔려있다. &lt;br /&gt;&lt;br /&gt;컨테이너&amp;nbsp;기술 &lt;br /&gt;&amp;bull;&amp;nbsp;컨테이너 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;애플리케이션과&amp;nbsp;그&amp;nbsp;실행에&amp;nbsp;필요한&amp;nbsp;모든&amp;nbsp;종속성(라이브러리,&amp;nbsp;바이너리&amp;nbsp;등)을&amp;nbsp;하나로&amp;nbsp;패키징한&amp;nbsp;기술 &lt;br /&gt;&amp;nbsp;&amp;nbsp;cf.&amp;nbsp;서버&amp;nbsp;가상화는&amp;nbsp;하드웨어&amp;nbsp;환경을&amp;nbsp;통째로&amp;nbsp;가상화 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;등장&amp;nbsp;배경 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;환경&amp;nbsp;일관성&amp;nbsp;:&amp;nbsp;내컴퓨터에서는&amp;nbsp;잘&amp;nbsp;작동&amp;nbsp;했었는데&amp;hellip;. &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;클라우드&amp;nbsp;컴퓨팅&amp;nbsp;확산&amp;nbsp;:&amp;nbsp;신속한&amp;nbsp;배포와&amp;nbsp;확장성 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;마이크로&amp;nbsp;서비스&amp;nbsp;아키텍처(MSA)&amp;nbsp;:&amp;nbsp;작은&amp;nbsp;단위의&amp;nbsp;서비스들을&amp;nbsp;독립적으로&amp;nbsp;배포/관리 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;특징 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;가상&amp;nbsp;서버보다&amp;nbsp;가상화&amp;nbsp;오버헤드가&amp;nbsp;적어&amp;nbsp;빠르게&amp;nbsp;기동/정지&amp;nbsp;가능 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;하드웨어&amp;nbsp;리소스&amp;nbsp;사용이&amp;nbsp;적어&amp;nbsp;1대의&amp;nbsp;물리&amp;nbsp;서버에&amp;nbsp;많은&amp;nbsp;컨테이너&amp;nbsp;동작&amp;nbsp;가능 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;컨테이너&amp;nbsp;단위로&amp;nbsp;패키징&amp;nbsp;되어&amp;nbsp;클라우드&amp;nbsp;간&amp;nbsp;복제&amp;nbsp;및&amp;nbsp;이식성&amp;nbsp;우수 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;대표&amp;nbsp;컨테이너&amp;nbsp;타입&amp;nbsp;가상화&amp;nbsp;소프트웨어&amp;nbsp;=&amp;nbsp;Docker &lt;br /&gt;&amp;bull;&amp;nbsp;컨테이너&amp;nbsp;타입&amp;nbsp;가상화&amp;nbsp;소프트웨어&amp;nbsp;운영&amp;nbsp;관리&amp;nbsp;도구&amp;nbsp;=&amp;nbsp;Kubernetes(K8S) &lt;br /&gt;&lt;br /&gt;하이퍼바이저형 &lt;br /&gt;장점&amp;nbsp;:&amp;nbsp;가상서버마다&amp;nbsp;OS&amp;nbsp;선택가능,&amp;nbsp;가상서버들을&amp;nbsp;완전히&amp;nbsp;분리,&amp;nbsp;하나의&amp;nbsp;가상서버가&amp;nbsp;사이버공격을&amp;nbsp;받아도&amp;nbsp;다른&amp;nbsp;가상서버에&amp;nbsp;영향을&amp;nbsp;못미침 &lt;br /&gt;단점&amp;nbsp;:&amp;nbsp;가상서버마다&amp;nbsp;OS가&amp;nbsp;필요해&amp;nbsp;CPU,메모리,스토리지&amp;nbsp;등의&amp;nbsp;하드웨어&amp;nbsp;리소스&amp;nbsp;사용량이&amp;nbsp;많음,&amp;nbsp;가상서버의&amp;nbsp;부팅시간이&amp;nbsp;많이걸림 &lt;br /&gt;&lt;br /&gt;컨테이너형 &lt;br /&gt;장점&amp;nbsp;:&amp;nbsp;다른&amp;nbsp;컨테이너에&amp;nbsp;복사하거나&amp;nbsp;마이그레이션하기&amp;nbsp;쉬움,&amp;nbsp;가상화&amp;nbsp;환경&amp;nbsp;위에서&amp;nbsp;별도의&amp;nbsp;OS를&amp;nbsp;동작시킬&amp;nbsp;필요가&amp;nbsp;없어&amp;nbsp;하드웨어&amp;nbsp;리소스가&amp;nbsp;적고&amp;nbsp;부팅이&amp;nbsp;빠름 &lt;br /&gt;단점&amp;nbsp;:&amp;nbsp;호스트OS와&amp;nbsp;컨테이너는&amp;nbsp;커널을&amp;nbsp;공유(Linux&amp;nbsp;커널에서&amp;nbsp;window&amp;nbsp;컨테이너&amp;nbsp;동작&amp;nbsp;불가능),&amp;nbsp;하나의&amp;nbsp;호스트OS가&amp;nbsp;여러개의&amp;nbsp;컨테이너를&amp;nbsp;동작&amp;nbsp;시키므로&amp;nbsp;한&amp;nbsp;컨테이너가&amp;nbsp;사이버&amp;nbsp;공격을&amp;nbsp;받으면&amp;nbsp;다른&amp;nbsp;컨테이너도&amp;nbsp;위험에&amp;nbsp;노출됨 &lt;br /&gt;&lt;br /&gt;클라우드&amp;nbsp;컴퓨팅이란? &lt;br /&gt;정의&amp;nbsp;:&amp;nbsp;클라우드&amp;nbsp;컴퓨팅이란,&amp;nbsp;공유&amp;nbsp;구성이&amp;nbsp;가능한&amp;nbsp;컴퓨팅&amp;nbsp;리소스(네트워크,&amp;nbsp;서버,&amp;nbsp;스토리지,&amp;nbsp;애플리케이션&amp;nbsp;서비스)의&amp;nbsp;통합을&amp;nbsp;통해&amp;nbsp;어디서나&amp;nbsp;간편하게,&amp;nbsp;요청에&amp;nbsp;따라&amp;nbsp;네트워크를&amp;nbsp;통해&amp;nbsp;접근하는&amp;nbsp;것을&amp;nbsp;가능하게&amp;nbsp;하는&amp;nbsp;모델이다. &lt;br /&gt;이는&amp;nbsp;최소한의&amp;nbsp;이용&amp;nbsp;절차&amp;nbsp;또는&amp;nbsp;서비스&amp;nbsp;공급자의&amp;nbsp;상호&amp;nbsp;작용을&amp;nbsp;통해,&amp;nbsp;신속히&amp;nbsp;할당되어&amp;nbsp;제공된다. &lt;br /&gt;&lt;br /&gt;클라우드는&amp;nbsp;그릇(기반기술) &lt;br /&gt;&amp;bull;&amp;nbsp;그릇&amp;nbsp;:&amp;nbsp;클라우드&amp;nbsp;사업자&amp;nbsp;(AWS,&amp;nbsp;Azure,&amp;nbsp;GCP,&amp;nbsp;&amp;hellip;) &lt;br /&gt;&amp;bull;&amp;nbsp;음식&amp;nbsp;:&amp;nbsp;AI,&amp;nbsp;IoT,&amp;nbsp;로봇,&amp;nbsp;블록체인,&amp;nbsp;양자,&amp;nbsp;위성,&amp;nbsp;&amp;hellip; &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;식탁에&amp;nbsp;다양한&amp;nbsp;음식들이&amp;nbsp;각각의&amp;nbsp;그릇에&amp;nbsp;담겨&amp;nbsp;사용자에게 &lt;br /&gt;제공됨 &lt;br /&gt;&amp;rarr;&amp;nbsp;사용자는&amp;nbsp;클라우드&amp;nbsp;환경에서&amp;nbsp;동작하는&amp;nbsp;각종&amp;nbsp;서비스를 &lt;br /&gt;유연하게&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있음 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;개인&amp;nbsp;그릇,&amp;nbsp;공용&amp;nbsp;그릇을&amp;nbsp;구별(public/private) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;각&amp;nbsp;그릇은&amp;nbsp;다양한&amp;nbsp;음식을&amp;nbsp;담을&amp;nbsp;수&amp;nbsp;있음(다양한&amp;nbsp;서비스) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;1개&amp;nbsp;식탁에&amp;nbsp;1개&amp;nbsp;이상의&amp;nbsp;그릇을&amp;nbsp;셋팅&amp;nbsp;할&amp;nbsp;수&amp;nbsp;있음&amp;nbsp;(multi/hybrid&amp;nbsp;cloud) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;다른&amp;nbsp;그릇의&amp;nbsp;소스를&amp;nbsp;찍어&amp;nbsp;먹을&amp;nbsp;수&amp;nbsp;있음(상호운용성) &lt;br /&gt;&lt;br /&gt;SaaS(Software&amp;nbsp;as&amp;nbsp;a&amp;nbsp;Service) &lt;br /&gt;&amp;bull;&amp;nbsp;업무에서&amp;nbsp;사용하는&amp;nbsp;SW의&amp;nbsp;기능을&amp;nbsp;필요한&amp;nbsp;만큼&amp;nbsp;서비스로&amp;nbsp;제공 &lt;br /&gt;&amp;bull;&amp;nbsp;하나의&amp;nbsp;서버를&amp;nbsp;여러&amp;nbsp;기업에서&amp;nbsp;공유하는&amp;nbsp;멀티&amp;nbsp;테넌트&amp;nbsp;방식 &lt;br /&gt;&amp;bull;&amp;nbsp;사용자&amp;nbsp;계정을&amp;nbsp;마련하면&amp;nbsp;서비스&amp;nbsp;바로&amp;nbsp;이용 &lt;br /&gt;&amp;bull;&amp;nbsp;스마트폰,&amp;nbsp;태블릿&amp;nbsp;등의&amp;nbsp;다양한&amp;nbsp;기기로&amp;nbsp;접속&amp;nbsp;가능 &lt;br /&gt;&lt;br /&gt;PaaS(Platform&amp;nbsp;as&amp;nbsp;a&amp;nbsp;Service) &lt;br /&gt;&amp;bull;&amp;nbsp;기업의&amp;nbsp;애플리케이션&amp;nbsp;실행&amp;nbsp;환경&amp;nbsp;및&amp;nbsp;애플리케이션&amp;nbsp;개발&amp;nbsp;환경을&amp;nbsp;서비스로&amp;nbsp;제공 &lt;br /&gt;&amp;bull;&amp;nbsp;애플리케이션&amp;nbsp;실행&amp;nbsp;환경이나&amp;nbsp;데이터베이스&amp;nbsp;등이&amp;nbsp;미리&amp;nbsp;제공 &lt;br /&gt;&amp;bull;&amp;nbsp;자사에서&amp;nbsp;개발한&amp;nbsp;응용&amp;nbsp;프로그램을&amp;nbsp;가동할&amp;nbsp;수&amp;nbsp;있음 &lt;br /&gt;&amp;bull;&amp;nbsp;서버&amp;nbsp;및&amp;nbsp;미들웨어의&amp;nbsp;상세&amp;nbsp;설정은&amp;nbsp;불가능 &lt;br /&gt;&lt;br /&gt;IaaS(Infrastructure&amp;nbsp;as&amp;nbsp;a&amp;nbsp;Service) &lt;br /&gt;&amp;bull;&amp;nbsp;CPU나&amp;nbsp;하드웨어&amp;nbsp;등의&amp;nbsp;컴퓨팅&amp;nbsp;리소스를&amp;nbsp;네트워크를&amp;nbsp;통해&amp;nbsp;서비스로&amp;nbsp;제공 &lt;br /&gt;&amp;bull;&amp;nbsp;대표&amp;nbsp;서비스:&amp;nbsp;가상&amp;nbsp;서버,&amp;nbsp;온라인&amp;nbsp;스토리지 &lt;br /&gt;&amp;bull;&amp;nbsp;하드웨어&amp;nbsp;자원을&amp;nbsp;소프트웨어적으로&amp;nbsp;나누어&amp;nbsp;사용자에게&amp;nbsp;제공(자유로운&amp;nbsp;스케일&amp;nbsp;업/다운) &lt;br /&gt;&amp;bull;&amp;nbsp;사용량에&amp;nbsp;따른&amp;nbsp;종량제&amp;nbsp;혹은&amp;nbsp;월정액제 &lt;br /&gt;&amp;bull;&amp;nbsp;(예)&amp;nbsp;프로모션&amp;nbsp;진행&amp;nbsp;시&amp;nbsp;일시적으로&amp;nbsp;컴퓨터&amp;nbsp;리소스를&amp;nbsp;많이&amp;nbsp;빌려&amp;nbsp;사용하고,&amp;nbsp;종료되면&amp;nbsp;리소스&amp;nbsp;감축 &lt;br /&gt;&amp;bull;&amp;nbsp;Amazon&amp;nbsp;Elastic&amp;nbsp;Compute&amp;nbsp;Cloud(EC2) &lt;br /&gt;&lt;br /&gt;클라우드&amp;nbsp;이용모델 &lt;br /&gt;&amp;bull;&amp;nbsp;온프레미스(on-premise) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;회사&amp;nbsp;내에&amp;nbsp;자체적으로&amp;nbsp;데이터&amp;nbsp;센터를&amp;nbsp;보유하고&amp;nbsp;시스템&amp;nbsp;구축에서&amp;nbsp;운용까지&amp;nbsp;직접&amp;nbsp;수행하는&amp;nbsp;형태 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;장점&amp;nbsp;:&amp;nbsp;높은&amp;nbsp;품질&amp;nbsp;&amp;amp;&amp;nbsp;보안 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;단점&amp;nbsp;:&amp;nbsp;하드웨어&amp;nbsp;리소스(CPU,&amp;nbsp;메모리&amp;nbsp;등)를&amp;nbsp;구축하는&amp;nbsp;초기&amp;nbsp;비용&amp;nbsp;발생, &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;퍼블릭&amp;nbsp;클라우드(Public&amp;nbsp;Cloud) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;AWS,&amp;nbsp;GCP,&amp;nbsp;Azure와&amp;nbsp;같은&amp;nbsp;클라우드&amp;nbsp;사업자가&amp;nbsp;시스템을&amp;nbsp;구축해&amp;nbsp;불특정&amp;nbsp;다수에게&amp;nbsp;서비스&amp;nbsp;제공 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;장점&amp;nbsp;:&amp;nbsp;하드웨어&amp;nbsp;투자&amp;nbsp;비용이&amp;nbsp;낮음,&amp;nbsp;필요한&amp;nbsp;자원을&amp;nbsp;빌려씀 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;단점&amp;nbsp;:&amp;nbsp;사용량이&amp;nbsp;많아지면&amp;nbsp;온프레미스&amp;nbsp;환경보다&amp;nbsp;더&amp;nbsp;많은&amp;nbsp;비용이&amp;nbsp;발생할&amp;nbsp;수&amp;nbsp;있음 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;프라이빗&amp;nbsp;클라우드(Private&amp;nbsp;Cloud) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;클라우드&amp;nbsp;서비스&amp;nbsp;제공자가&amp;nbsp;기업의&amp;nbsp;전용&amp;nbsp;데이터&amp;nbsp;센터&amp;nbsp;환경&amp;nbsp;구축&amp;nbsp;제공 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;장점&amp;nbsp;:&amp;nbsp;높은&amp;nbsp;보안성 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;단점&amp;nbsp;:&amp;nbsp;공용&amp;nbsp;클라우드보다&amp;nbsp;초기비용이&amp;nbsp;많이들고,&amp;nbsp;전문인력이&amp;nbsp;필요하며&amp;nbsp;유지보수&amp;nbsp;비용이&amp;nbsp;높음 &lt;br /&gt;&amp;bull;&amp;nbsp;하이브리드&amp;nbsp;클라우드(Hybrid&amp;nbsp;Cloud) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;퍼블릭&amp;nbsp;클라우드&amp;nbsp;+&amp;nbsp;프라이빗&amp;nbsp;클라우드 &lt;br /&gt;&lt;br /&gt;&amp;bull;&amp;nbsp;커뮤니티&amp;nbsp;클라우드(Community&amp;nbsp;Cloud) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;bull;&amp;nbsp;공통의&amp;nbsp;관심사(보안,&amp;nbsp;규정준수,&amp;nbsp;관할권&amp;nbsp;등)를&amp;nbsp;가진&amp;nbsp;특정&amp;nbsp;목적의&amp;nbsp;커뮤니티를&amp;nbsp;공유하는&amp;nbsp;클라우드&lt;/p&gt;</description>
      <category>클라우드 기초</category>
      <author>wlsn</author>
      <guid isPermaLink="true">https://wlsn3999.tistory.com/80</guid>
      <comments>https://wlsn3999.tistory.com/80#entry80comment</comments>
      <pubDate>Thu, 12 Dec 2024 16:44:34 +0900</pubDate>
    </item>
    <item>
      <title>C++과 함께하는 우주 탐험</title>
      <link>https://wlsn3999.tistory.com/79</link>
      <description>&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우주선의 준비&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 우주선은 다양한 도구들을 갖추고 있었고&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;마치 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;가상 함수&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;처럼 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하나의 이름으로 여러 수단과 방법을 제공하는 형태&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 도구들이었습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;2. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우주정거장과의 연결&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;탐사대는 우주정거장과의 연결을 위해 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;바인딩&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;을 설정했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이는 우주선과 정거장이 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;어떻게 결합되어 서로 협력할 수 있는지&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 결정합니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;산소의 공유&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우주선과 우주정거장은 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;static &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;멤버 변수&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 통해 모든 탐사대원이 공유하는 산소를 관리했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 산소는 탐사대의 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;공동으로 사용하는 자원&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이었습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이동 도구의 상속&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;탐사대는 우주정거장에서 받은 이동 도구를 사용했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 도구들은 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;부모로부터 자식에게 속성과 행동이 물려지는&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt; &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;상속&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 개념처럼 작용했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;5. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출발 준비&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;탐사대는 필요한 물품들을 정리했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 과정은 마치 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;생성자&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;가 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;객체를 초기화하는 것&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;과 같습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;6. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;임무 내용 메모&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우주선 안에는 각 탐사대원이 맡은 임무 내용을 메모할 수 있는 공간이 있었습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 메모는 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;함수 중첩&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;처럼&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;임무 내용을 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기록하면서도 각 페이지와 독립적으로 생각할 수 있는 구조&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;였습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;7. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;식사 시간&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우주선에서 식사할 때&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;특별한 주문이 없다면 정해진 음식이 제공되었습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이는 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;디폴트 인자&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 개념처럼&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기본값이 자동으로 적용&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;되는 상황이었습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;8. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우주선의 속도&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;우주선은 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;const &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;객체&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;처럼&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한 번 설정된 속도는 변경할 수 없었습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이 안정적인 속도로 탐사대는 안전하게 목적지에 도착할 수 있었습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;9. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자기 점검&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;탐사대원들은 우주선을 수리할 때 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;this &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;포인터&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 사용하는 것처럼 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;자신의 상태를 점검&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각자 자신이 맡은 부분을 세심하게 점검하며 우주선의 안전을 확보했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;10. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;상태 점검을 위한 포인터 사용&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;탐사대는 각 팀원이 맡은 장비의 상태를 점검할 때 &lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;포인터&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 활용했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;한 팀원이 특정 장비의 상태를 확인하기 위해 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;포인터를 사용하여 해당 장비의 메모리 주소를 참조&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;11. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;탐사대원 정보 기록&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;탐사대원들은 서로의 정보를 쉽게 확인하기 위해 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;struct&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;방식을 사용했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이름&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;나이&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;역할을 카드에 함께 적어 정리&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;12. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;조직의 관리&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;탐사대는 여러 팀으로 나뉘어 있었고&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;각 팀은 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;namespace&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 활용하여 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;서로를 구분&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;13. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;민수의 복제&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;탐사 중&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;민수라는 탐사대원이 발견되었습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;그는 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;템플릿&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;의 개념처럼&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;하나의 틀로 다양한 데이터 타입의 존재&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;를 보여주었습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;14. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;임무의 마무리&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;모든 임무가 끝난 후&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;탐사대는 외계 행성에서 지구로 돌아오기 전에 모든 물품을 정리하고 청소했습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;. &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이는 &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;소멸자&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;처럼&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;, &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;떠나기 전 청소하는 과정&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이었습니다&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;</description>
      <category>C++</category>
      <author>wlsn</author>
      <guid isPermaLink="true">https://wlsn3999.tistory.com/79</guid>
      <comments>https://wlsn3999.tistory.com/79#entry79comment</comments>
      <pubDate>Tue, 10 Dec 2024 13:15:19 +0900</pubDate>
    </item>
    <item>
      <title>클라우드 기초 14주차</title>
      <link>https://wlsn3999.tistory.com/78</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;아키텍처 - 클라이언트 서버시스템 &lt;br /&gt;-&amp;nbsp;클라이언트와&amp;nbsp;서버간의&amp;nbsp;상호&amp;nbsp;통신 &lt;br /&gt;-&amp;nbsp;Thin&amp;nbsp;Client&amp;nbsp;:&amp;nbsp;중요&amp;nbsp;데이터&amp;nbsp;처리는&amp;nbsp;서버에&amp;nbsp;맡기고&amp;nbsp;클라이언트는&amp;nbsp;단순한&amp;nbsp;역할만&amp;nbsp;수행 &lt;br /&gt;- Fat Client : 중요 데이터 처리는 클라이언트에서 담당하고, 서버는 단순히 데이터 취합 및 전달 역할 수행&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 예시1) 게임에서 방장 컴퓨터 사양이 낮으면 게임 전체가 느려짐&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 예시2) 주식 프로그램은 차트표기, 주가 흐름분석 등을 클라이언트에서, 필요한 주가 데이터는 서버에서 취득 &lt;br /&gt;&lt;br /&gt;아키텍처&amp;nbsp;-&amp;nbsp;3계층형&amp;nbsp;아키텍처 &lt;br /&gt;클라이언트&amp;nbsp;-&amp;gt;&amp;nbsp;웹서비스&amp;nbsp;-&amp;gt;&amp;nbsp;애플리케이션&amp;nbsp;-&amp;gt;&amp;nbsp;데이터베이스&amp;nbsp;순으로&amp;nbsp;이어짐 &lt;br /&gt;&lt;br /&gt;프레젠테이션&amp;nbsp;계층(Presentation) &lt;br /&gt;-&amp;nbsp;사용자의&amp;nbsp;입력만&amp;nbsp;받음 &lt;br /&gt;-&amp;nbsp;웹브라우저&amp;nbsp;화면을&amp;nbsp;표시 &lt;br /&gt;-&amp;nbsp;Apache,&amp;nbsp;IIS&amp;nbsp;등 &lt;br /&gt;애플리케이션&amp;nbsp;계층(Application) &lt;br /&gt;-&amp;nbsp;사용자&amp;nbsp;요청에&amp;nbsp;따른&amp;nbsp;업무(비즈니스&amp;nbsp;로직)&amp;nbsp;처리&amp;nbsp;실시 &lt;br /&gt;-&amp;nbsp;ASP,&amp;nbsp;PHP,&amp;nbsp;JSP&amp;nbsp;등 &lt;br /&gt;데이터&amp;nbsp;계층(Data) &lt;br /&gt;-&amp;nbsp;애플리케이션&amp;nbsp;계층의&amp;nbsp;요청에&amp;nbsp;따라&amp;nbsp;데이터&amp;nbsp;입출력 &lt;br /&gt;&lt;br /&gt;특징 &lt;br /&gt;-&amp;nbsp;각&amp;nbsp;계층이&amp;nbsp;분리되어&amp;nbsp;있어&amp;nbsp;효율적임(유지보수,&amp;nbsp;확장성&amp;nbsp;등) &lt;br /&gt;-&amp;nbsp;서버&amp;nbsp;부하&amp;nbsp;집중&amp;nbsp;및&amp;nbsp;개선 &lt;br /&gt;-&amp;nbsp;클라이언트에서&amp;nbsp;업데이트가&amp;nbsp;불필요하며,&amp;nbsp;웹&amp;nbsp;브라우저만&amp;nbsp;있으면&amp;nbsp;됨 &lt;br /&gt;-&amp;nbsp;구조가&amp;nbsp;복잡하고,&amp;nbsp;장애&amp;nbsp;포인트가&amp;nbsp;늘어날&amp;nbsp;수&amp;nbsp;있음 &lt;br /&gt;&lt;br /&gt;3계층&amp;nbsp;네트워크&amp;nbsp;시스템의&amp;nbsp;동작(Client&amp;nbsp;Web) &lt;br /&gt;-&amp;nbsp;웹&amp;nbsp;브라우저가&amp;nbsp;&lt;a href=&quot;http://www.naver.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;http://www.naver.com&lt;/a&gt;&amp;nbsp;요청 &lt;br /&gt;-&amp;nbsp;해당&amp;nbsp;사이트가&amp;nbsp;어디에&amp;nbsp;있는지&amp;nbsp;이름해석(IP주소를&amp;nbsp;찾는&amp;nbsp;과정) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 클라이언트는&amp;nbsp;IP주소&amp;nbsp;변환&amp;nbsp;테이블에&amp;nbsp;네이버가&amp;nbsp;있는지&amp;nbsp;확인하고,&amp;nbsp;없으면&amp;nbsp;DNS에&amp;nbsp;요청 &lt;br /&gt;DNS로부터&amp;nbsp;IP&amp;nbsp;주소를&amp;nbsp;획득 &lt;br /&gt;-&amp;nbsp;네이버의&amp;nbsp;웹&amp;nbsp;서버에&amp;nbsp;도착하면&amp;nbsp;웹&amp;nbsp;서버&amp;nbsp;데몬(httpd)프로세스가&amp;nbsp;요청을&amp;nbsp;접수함 &lt;br /&gt;-&amp;nbsp;정적&amp;nbsp;컨텐츠인지&amp;nbsp;동적&amp;nbsp;컨텐츠인지&amp;nbsp;판단 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 정적&amp;nbsp;컨텐츠면&amp;nbsp;웹&amp;nbsp;서버에서&amp;nbsp;직접&amp;nbsp;응답,&amp;nbsp;동적컨텐츠면&amp;nbsp;AP서버로&amp;nbsp;요청&amp;nbsp;전달 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 정적&amp;nbsp;컨텐츠&amp;nbsp;:&amp;nbsp;실시간으로&amp;nbsp;변경할&amp;nbsp;필요가&amp;nbsp;없는&amp;nbsp;고정된&amp;nbsp;데이터(회사&amp;nbsp;로고,&amp;nbsp;이미지&amp;nbsp;등) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 동적&amp;nbsp;컨텐츠&amp;nbsp;:&amp;nbsp;사용자나&amp;nbsp;상황에&amp;nbsp;따라&amp;nbsp;변경되는&amp;nbsp;데이터(최신&amp;nbsp;날씨&amp;nbsp;정보,&amp;nbsp;장바구니&amp;nbsp;등) &lt;br /&gt;&lt;br /&gt;3계층&amp;nbsp;네트워크&amp;nbsp;시스템의&amp;nbsp;동작(Web&amp;nbsp;Was) &lt;br /&gt;-&amp;nbsp;웹&amp;nbsp;서버로부터&amp;nbsp;요청이&amp;nbsp;도착 &lt;br /&gt;-&amp;nbsp;스레드가&amp;nbsp;요청을&amp;nbsp;받으면&amp;nbsp;자신이&amp;nbsp;계산할&amp;nbsp;수&amp;nbsp;있는지,&amp;nbsp;DB&amp;nbsp;접속이&amp;nbsp;필요한지&amp;nbsp;판단 &lt;br /&gt;-&amp;nbsp;DB&amp;nbsp;접속이&amp;nbsp;필요하면&amp;nbsp;커넥션&amp;nbsp;풀(connection&amp;nbsp;pool)에&amp;nbsp;엑세스 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; Connection&amp;nbsp;pool&amp;nbsp;:&amp;nbsp;시간&amp;nbsp;및&amp;nbsp;자원&amp;nbsp;효율을&amp;nbsp;위해&amp;nbsp;DB&amp;nbsp;연결을&amp;nbsp;미리&amp;nbsp;여러&amp;nbsp;개&amp;nbsp;생성해&amp;nbsp;두고&amp;nbsp;필요할&amp;nbsp;때&amp;nbsp;사용 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 예시)&amp;nbsp;마치&amp;nbsp;키와&amp;nbsp;비슷하다&amp;nbsp;미리&amp;nbsp;만들어진&amp;nbsp;키를&amp;nbsp;바로&amp;nbsp;전달받아&amp;nbsp;사용하고&amp;nbsp;사용이&amp;nbsp;완료된&amp;nbsp;키는&amp;nbsp;Connection을&amp;nbsp;통해&amp;nbsp;반환하는&amp;nbsp;형태 &lt;br /&gt;&lt;br /&gt;3계층&amp;nbsp;네트워크&amp;nbsp;시스템의&amp;nbsp;동작(Was&amp;nbsp;DB) &lt;br /&gt;-&amp;nbsp;AP&amp;nbsp;서버로부터&amp;nbsp;요청이&amp;nbsp;도착 &lt;br /&gt;-&amp;nbsp;프로세스가&amp;nbsp;요청을&amp;nbsp;접수하고&amp;nbsp;캐시가&amp;nbsp;존재하는지&amp;nbsp;확인 &lt;br /&gt;-&amp;nbsp;캣에&amp;nbsp;없으면&amp;nbsp;DBMS를&amp;nbsp;통해&amp;nbsp;디스크에&amp;nbsp;엑세스 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; DBMS&amp;nbsp;:&amp;nbsp;데이터베이스&amp;nbsp;내의&amp;nbsp;데이터를&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;해주는&amp;nbsp;소프트웨어(MySQL&amp;nbsp;등) &lt;br /&gt;-&amp;nbsp;디스크가&amp;nbsp;데이터를&amp;nbsp;반환 &lt;br /&gt;-&amp;nbsp;데이터를&amp;nbsp;캐시&amp;nbsp;형태로&amp;nbsp;저장 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 다음번에&amp;nbsp;빠른&amp;nbsp;응답을&amp;nbsp;위해&amp;nbsp;캐시로&amp;nbsp;저장 &lt;br /&gt;-&amp;nbsp;결과를&amp;nbsp;AP서버로&amp;nbsp;반환 &lt;br /&gt;&lt;br /&gt;3계층&amp;nbsp;네트워크&amp;nbsp;시스템의&amp;nbsp;동작(DB&amp;nbsp;&amp;rarr;&amp;nbsp;Client) &lt;br /&gt;-&amp;nbsp;AP&amp;nbsp;서버가&amp;nbsp;DB로부터&amp;nbsp;데이터&amp;nbsp;수신 &lt;br /&gt;-&amp;nbsp;스레드가&amp;nbsp;수신한&amp;nbsp;데이터로&amp;nbsp;결과&amp;nbsp;도출 &lt;br /&gt;-&amp;nbsp;해당&amp;nbsp;결과를&amp;nbsp;웹&amp;nbsp;서버로&amp;nbsp;반환 &lt;br /&gt;-&amp;nbsp;웹&amp;nbsp;서버의&amp;nbsp;프로세스는&amp;nbsp;해당&amp;nbsp;결과를&amp;nbsp;그대로&amp;nbsp;반환 &lt;br /&gt;-&amp;nbsp;결과가&amp;nbsp;클라이언트의&amp;nbsp;웹&amp;nbsp;브라우저로&amp;nbsp;반환되어&amp;nbsp;화면에&amp;nbsp;표시 &lt;br /&gt;&lt;br /&gt;프로그램&amp;nbsp;vs&amp;nbsp;프로세스&amp;nbsp;vs&amp;nbsp;스레드 &lt;br /&gt;-&amp;nbsp;프로그램 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 특정&amp;nbsp;작업을&amp;nbsp;수행하기&amp;nbsp;위해&amp;nbsp;작성된&amp;nbsp;명령어들의&amp;nbsp;집합 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 하드&amp;nbsp;디스크와&amp;nbsp;같은&amp;nbsp;저장장치에&amp;nbsp;저장된&amp;nbsp;상태(메모리에&amp;nbsp;올라가지&amp;nbsp;않은&amp;nbsp;상태) &lt;br /&gt;-&amp;nbsp;프로세스(Process) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 실행&amp;nbsp;중인&amp;nbsp;프로그램 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 독립된&amp;nbsp;메모리&amp;nbsp;공간(다른&amp;nbsp;프로세스와&amp;nbsp;독립적) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 메모리에&amp;nbsp;적재된&amp;nbsp;후&amp;nbsp;CPU&amp;nbsp;자원을&amp;nbsp;할당받아&amp;nbsp;실행 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 멀티&amp;nbsp;프로세스&amp;nbsp;:&amp;nbsp;여러&amp;nbsp;개의&amp;nbsp;프로그램을&amp;nbsp;여러&amp;nbsp;개의&amp;nbsp;프로세스가&amp;nbsp;동시에&amp;nbsp;처리 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 예시)&amp;nbsp;한글,엑셀,PPT&amp;nbsp;등&amp;nbsp;동시에&amp;nbsp;동작 &lt;br /&gt;-&amp;nbsp;스레드(Thread) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 프로세스&amp;nbsp;내에서&amp;nbsp;실행되는&amp;nbsp;작업의&amp;nbsp;최소의&amp;nbsp;단위 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 프로세스의&amp;nbsp;자원을&amp;nbsp;공유 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 병렬&amp;nbsp;처리&amp;nbsp;가능(multi-thread) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 멀티&amp;nbsp;스레드&amp;nbsp;:&amp;nbsp;하나의&amp;nbsp;프로그램&amp;nbsp;내&amp;nbsp;여러&amp;nbsp;작업이&amp;nbsp;동시에&amp;nbsp;처리 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 예시)&amp;nbsp;한글&amp;nbsp;프로그램에서&amp;nbsp;문서작성,&amp;nbsp;오타검색이&amp;nbsp;동시에&amp;nbsp;동작 &lt;br /&gt;&lt;br /&gt;Process는&amp;nbsp;OS의&amp;nbsp;관리&amp;nbsp;대상이라는&amp;nbsp;점 &lt;br /&gt;OS는&amp;nbsp;프로세스&amp;nbsp;전체&amp;nbsp;목록을&amp;nbsp;가지고&amp;nbsp;있으며&amp;nbsp;이를&amp;nbsp;Process&amp;nbsp;table이라고도&amp;nbsp;하는데&amp;nbsp;Unix&amp;nbsp;초창기에는&amp;nbsp;이를&amp;nbsp;array&amp;nbsp;형태로&amp;nbsp;구현이&amp;nbsp;되어있었다고&amp;nbsp;한다.&amp;nbsp;현재는&amp;nbsp;linked&amp;nbsp;list&amp;nbsp;형태로&amp;nbsp;수정되었다. &lt;br /&gt;프로세스를&amp;nbsp;관리한다는&amp;nbsp;것은&amp;nbsp;현재&amp;nbsp;CPU를&amp;nbsp;점유할&amp;nbsp;프로세스를&amp;nbsp;고르는&amp;nbsp;&quot;스케줄링&quot;에&amp;nbsp;관련된&amp;nbsp;정보와&amp;nbsp;&quot;State&quot;,&amp;nbsp;&quot;메모리&amp;nbsp;정보&quot;,&amp;nbsp;&quot;File&amp;nbsp;Descripter&amp;nbsp;table&quot;,&amp;nbsp;&quot;Kernel&amp;nbsp;Stack&quot;,&amp;nbsp;&quot;Process&amp;nbsp;ID&quot;,&amp;nbsp;&quot;IPC&quot;&amp;nbsp;등&amp;nbsp;모두&amp;nbsp;포함한다. &lt;br /&gt;이&amp;nbsp;모든&amp;nbsp;정보를&amp;nbsp;프로세스&amp;nbsp;하나당&amp;nbsp;한개로&amp;nbsp;묶어서&amp;nbsp;관리하는&amp;nbsp;것을&amp;nbsp;PCB(Process&amp;nbsp;Control&amp;nbsp;Block)이라고&amp;nbsp;한다. &lt;br /&gt;&lt;br /&gt;스탠바이형&amp;nbsp;아키텍처 &lt;br /&gt;-&amp;nbsp;동일한&amp;nbsp;작업을&amp;nbsp;수행하는&amp;nbsp;물리&amp;nbsp;서버를&amp;nbsp;최소&amp;nbsp;2대&amp;nbsp;설치하여&amp;nbsp;고가용성을&amp;nbsp;높이는&amp;nbsp;구조 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 고가용성(High&amp;nbsp;Availability)&amp;nbsp;:&amp;nbsp;IT&amp;nbsp;시스템의&amp;nbsp;장애를&amp;nbsp;최소화해&amp;nbsp;100%&amp;nbsp;상시&amp;nbsp;접근이&amp;nbsp;가능한&amp;nbsp;상태로유지하는&amp;nbsp;능력 &lt;br /&gt;-&amp;nbsp;서버의&amp;nbsp;이중화&amp;nbsp;목적 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 부하분산&amp;nbsp;:&amp;nbsp;여러&amp;nbsp;자원이&amp;nbsp;나누어&amp;nbsp;처리하여&amp;nbsp;안정적인&amp;nbsp;서비스&amp;nbsp;제공 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 장애처리&amp;nbsp;:&amp;nbsp;하나의&amp;nbsp;서버가&amp;nbsp;장애가&amp;nbsp;생기더라도&amp;nbsp;다른&amp;nbsp;서버에서&amp;nbsp;서비스&amp;nbsp;제공 &lt;br /&gt;-&amp;nbsp;Active-Active&amp;nbsp;구조 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; L4&amp;nbsp;스위치&amp;nbsp;등으로&amp;nbsp;부하분산하여,&amp;nbsp;1번서버&amp;nbsp;&amp;amp;&amp;nbsp;2번서버가&amp;nbsp;나누어&amp;nbsp;처리 &lt;br /&gt;-&amp;nbsp;Active-Standby&amp;nbsp;구조&amp;nbsp;(Active-Passive) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 1번&amp;nbsp;서버&amp;nbsp;동작(Active&amp;nbsp;상태),&amp;nbsp;2번&amp;nbsp;서버&amp;nbsp;대기(Stand&amp;nbsp;by&amp;nbsp;상태) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 1번&amp;nbsp;서버가&amp;nbsp;장애&amp;nbsp;발생시,&amp;nbsp;2번&amp;nbsp;서버가&amp;nbsp;즉시&amp;nbsp;Active&amp;nbsp;상태로&amp;nbsp;전환되어&amp;nbsp;서비스&amp;nbsp;제공 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 페일오버(Failover)&amp;nbsp;:&amp;nbsp;장애&amp;nbsp;조치&amp;nbsp;기능으로&amp;nbsp;시스템&amp;nbsp;장애&amp;nbsp;발생시&amp;nbsp;다른&amp;nbsp;시스템으로&amp;nbsp;대체하여&amp;nbsp;운영 &lt;br /&gt;&lt;br /&gt;재해&amp;nbsp;대책형&amp;nbsp;아키텍처 &lt;br /&gt;-&amp;nbsp;화재,&amp;nbsp;지진&amp;nbsp;등의&amp;nbsp;재해로부터&amp;nbsp;대응하기&amp;nbsp;위한&amp;nbsp;구조 &lt;br /&gt;-&amp;nbsp;재해복구(Disaster&amp;nbsp;Recovery,&amp;nbsp;DR) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 특정&amp;nbsp;데이터&amp;nbsp;센터에서&amp;nbsp;장애가&amp;nbsp;발생하면&amp;nbsp;지리적&amp;nbsp;위치가&amp;nbsp;다른&amp;nbsp;환경에서&amp;nbsp;업무재개 &lt;br /&gt;&lt;br /&gt;IT&amp;nbsp;인프라(HW)&amp;nbsp;-&amp;nbsp;서버 &lt;br /&gt;-&amp;nbsp;일반&amp;nbsp;컴퓨터(PC)와&amp;nbsp;유사 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 전원이&amp;nbsp;이중화&amp;nbsp;되어&amp;nbsp;안정적인&amp;nbsp;전원공급 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; CPU,&amp;nbsp;메모리가&amp;nbsp;일반&amp;nbsp;컴퓨터보다&amp;nbsp;처리용량이&amp;nbsp;높음 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 타워형&amp;nbsp;서버,&amp;nbsp;랙마운트형&amp;nbsp;서버 &lt;br /&gt;-&amp;nbsp;각&amp;nbsp;컴포넌트는&amp;nbsp;버스(Bus)로&amp;nbsp;연결 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 버스(Bus)&amp;nbsp;:&amp;nbsp;서버&amp;nbsp;내부의&amp;nbsp;컴포넌트들을&amp;nbsp;서로&amp;nbsp;연결하는&amp;nbsp;회선 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 예시)&amp;nbsp;CPU와&amp;nbsp;메모리의&amp;nbsp;연결 &lt;br /&gt;-&amp;nbsp;PClE(PCI&amp;nbsp;Express)는&amp;nbsp;외부&amp;nbsp;장치와&amp;nbsp;연결되는&amp;nbsp;버스 &lt;br /&gt;-&amp;nbsp;가상서버(Virtual&amp;nbsp;Machine,&amp;nbsp;VM) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 가상화(Virtualization)&amp;nbsp;기술을&amp;nbsp;통해&amp;nbsp;하드웨어&amp;nbsp;자원을&amp;nbsp;여러&amp;nbsp;개로&amp;nbsp;분할하여&amp;nbsp;각각을&amp;nbsp;개별&amp;nbsp;서버로&amp;nbsp;동작 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 하이퍼바이저(Hypevisor)&amp;nbsp;:&amp;nbsp;가상머신&amp;nbsp;생성&amp;nbsp;및&amp;nbsp;삭제&amp;nbsp;S/W &lt;br /&gt;예시)&amp;nbsp;VMware,&amp;nbsp;VirtualBox&amp;nbsp;등 &lt;br /&gt;&lt;br /&gt;IT&amp;nbsp;인프라(HW)&amp;nbsp;-&amp;nbsp;GPU서버 &lt;br /&gt;-&amp;nbsp;GPU(Graphics&amp;nbsp;Processing&amp;nbsp;Unit)&amp;nbsp;서버는&amp;nbsp;일반&amp;nbsp;CPU&amp;nbsp;서버와&amp;nbsp;달리&amp;nbsp;강력한&amp;nbsp;그래픽&amp;nbsp;처리&amp;nbsp;장치를&amp;nbsp;답재한&amp;nbsp;서버 &lt;br /&gt;-&amp;nbsp;고성능&amp;nbsp;컴퓨팅&amp;nbsp;환경에&amp;nbsp;필수적으로&amp;nbsp;활용되고&amp;nbsp;있음 &lt;br /&gt;-&amp;nbsp;병렬&amp;nbsp;처리&amp;nbsp;능력 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 수천&amp;nbsp;개의&amp;nbsp;코어를&amp;nbsp;통한&amp;nbsp;동시&amp;nbsp;연산&amp;nbsp;처리 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 행렬&amp;nbsp;연산과&amp;nbsp;같은&amp;nbsp;대규모&amp;nbsp;병렬처리에&amp;nbsp;최적화 &lt;br /&gt;-&amp;nbsp;활용분야 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 인공지능&amp;nbsp;및&amp;nbsp;머신러닝 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 데이터&amp;nbsp;사이언스 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 3D&amp;nbsp;렌더링 &lt;br /&gt;&lt;br /&gt;IT&amp;nbsp;인프라(HW)&amp;nbsp;-&amp;nbsp;서버랙 &lt;br /&gt;-&amp;nbsp;하드웨어&amp;nbsp;장비를&amp;nbsp;설치하는&amp;nbsp;장치 &lt;br /&gt;-&amp;nbsp;전면에는&amp;nbsp;전원버튼,&amp;nbsp;HDD&amp;nbsp;등이&amp;nbsp;있음 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 손으로&amp;nbsp;쉽게&amp;nbsp;HDD&amp;nbsp;교체&amp;nbsp;원활 &lt;br /&gt;-&amp;nbsp;서버랙&amp;nbsp;규격 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 폭&amp;nbsp;:&amp;nbsp;19인치 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 1U&amp;nbsp;:&amp;nbsp;4.5cm,&amp;nbsp;2U&amp;nbsp;=&amp;nbsp;9cm &lt;br /&gt;-&amp;nbsp;전원선&amp;nbsp;등&amp;nbsp;케이블은&amp;nbsp;랙&amp;nbsp;뒷면에서&amp;nbsp;연결 &lt;br /&gt;&lt;br /&gt;IT&amp;nbsp;인프라(HW)&amp;nbsp;-&amp;nbsp;스토리지 &lt;br /&gt;-&amp;nbsp;컴퓨터에&amp;nbsp;데이터를&amp;nbsp;저장하는&amp;nbsp;저장소의&amp;nbsp;역할 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; RAID&amp;nbsp;:&amp;nbsp;고가용성과&amp;nbsp;고성능,&amp;nbsp;RAID&amp;nbsp;0(스트라이핑),&amp;nbsp;RAID(미러링)&amp;nbsp;등 &lt;br /&gt;-&amp;nbsp;스토리지&amp;nbsp;종류 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; DAS(Direct&amp;nbsp;Attached&amp;nbsp;Storage) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 저장&amp;nbsp;장치가&amp;nbsp;호스트에&amp;nbsp;직접&amp;nbsp;연결되어&amp;nbsp;사용&amp;nbsp;및&amp;nbsp;관리 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 예시)&amp;nbsp;USB&amp;nbsp;사용&amp;nbsp;외장하드 &lt;br /&gt;NAS(Network&amp;nbsp;ATTached&amp;nbsp;Storage) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 스토리지를&amp;nbsp;네트워크에&amp;nbsp;부착하여&amp;nbsp;사용(데이터&amp;nbsp;공유&amp;nbsp;방식) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 확장성,&amp;nbsp;유연성이&amp;nbsp;뛰어남,&amp;nbsp;접속&amp;nbsp;증가시&amp;nbsp;성능저하 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; SAN(Storage&amp;nbsp;Area&amp;nbsp;Network) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 스토리를&amp;nbsp;전용&amp;nbsp;네트워크로&amp;nbsp;구성하여&amp;nbsp;사용(고속,&amp;nbsp;고품질&amp;nbsp;환경) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 광채널&amp;nbsp;스위치로&amp;nbsp;연결(SAN&amp;nbsp;전용&amp;nbsp;스위치&amp;nbsp;필요) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 종류&amp;nbsp;:&amp;nbsp;FC-SAN(광통신),&amp;nbsp;IP-SAN(IP&amp;nbsp;통신) &lt;br /&gt;&lt;br /&gt;IT&amp;nbsp;인프라(HW)&amp;nbsp;-&amp;nbsp;스토리지(데이터&amp;nbsp;저장&amp;nbsp;방식) &lt;br /&gt;-&amp;nbsp;블록(Block)&amp;nbsp;스토리지 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 데이터를 일정한 크기의 블록으로 나누어 저장 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 정형화된 데이터를 빠르게 처리하는 용도 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; SAN 또는 가상머신의 디스크로 사용 &lt;br /&gt;-&amp;nbsp;파일(File)&amp;nbsp;스토리지 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; &amp;nbsp;파일과 폴더의 계층구조로 이루어진 방식 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 가장 일반적으로 익숙한 방식(윈도우 탐색기) &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 데이터가 많아지면 파일과 폴더를 찾는 리소스 소모 &amp;rarr; 성능저하 &lt;br /&gt;-&amp;nbsp;오브젝트(Object)&amp;nbsp;스토리지 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 오브젝트(비디오, 오디오, 텍스트 등)라는 개별 데이터 단위로 저장 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 평면 구조로써 접근이 쉽고 확장성이 높음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IT&amp;nbsp;인프라(HW)&amp;nbsp;-&amp;nbsp;운영체제 &lt;br /&gt;-&amp;nbsp;컴퓨터&amp;nbsp;하드웨어와&amp;nbsp;사용자&amp;nbsp;및&amp;nbsp;소프트웨어를&amp;nbsp;연결해주는&amp;nbsp;스프트웨어 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 컴퓨터&amp;nbsp;시스템을&amp;nbsp;편리하게&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;환경을&amp;nbsp;제공 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 최대&amp;nbsp;성능을&amp;nbsp;내며&amp;nbsp;컴퓨팅&amp;nbsp;리소스를&amp;nbsp;효율적으로&amp;nbsp;관리 &lt;br /&gt;&lt;br /&gt;-&amp;nbsp;응용&amp;nbsp;프로그램&amp;nbsp;:&amp;nbsp;웹&amp;nbsp;브라우저,&amp;nbsp;오피스,&amp;nbsp;한글,&amp;nbsp;웹&amp;nbsp;서버&amp;nbsp;등 &lt;br /&gt;-&amp;nbsp;유틸리티&amp;nbsp;:&amp;nbsp;컴퓨터를&amp;nbsp;분석,&amp;nbsp;구성,&amp;nbsp;최적화,&amp;nbsp;유지관리&amp;nbsp;하는&amp;nbsp;시스템&amp;nbsp;소프트웨어 &lt;br /&gt;-&amp;nbsp;커널&amp;nbsp;:&amp;nbsp;운영체제의&amp;nbsp;핵심 &lt;br /&gt;-&amp;nbsp;시스템&amp;nbsp;호출&amp;nbsp;:&amp;nbsp;프로세스가&amp;nbsp;커널에&amp;nbsp;처리를&amp;nbsp;요청하는&amp;nbsp;방법 &lt;br /&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 프로세스&amp;nbsp;:&amp;nbsp;실행&amp;nbsp;중인&amp;nbsp;프로그램 &lt;br /&gt;-&amp;nbsp;드라이버&amp;nbsp;:&amp;nbsp;하드웨어&amp;nbsp;장치를&amp;nbsp;운영체제와&amp;nbsp;연결하는&amp;nbsp;소프트웨어 &lt;br /&gt;-&amp;nbsp;종류&amp;nbsp;:&amp;nbsp;유닉스,&amp;nbsp;리눅스,&amp;nbsp;윈도우&lt;/p&gt;</description>
      <category>클라우드 기초</category>
      <author>wlsn</author>
      <guid isPermaLink="true">https://wlsn3999.tistory.com/78</guid>
      <comments>https://wlsn3999.tistory.com/78#entry78comment</comments>
      <pubDate>Thu, 5 Dec 2024 16:41:20 +0900</pubDate>
    </item>
    <item>
      <title>자료구조 실습 14주차</title>
      <link>https://wlsn3999.tistory.com/77</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;내부 정렬 &lt;br /&gt;정렬할&amp;nbsp;자료를&amp;nbsp;메인메모리에&amp;nbsp;올려&amp;nbsp;정렬하는&amp;nbsp;방식 &lt;br /&gt;외부&amp;nbsp;정렬&amp;nbsp;-&amp;nbsp;보조기억장치에&amp;nbsp;저장함 &lt;br /&gt;&lt;br /&gt;외부&amp;nbsp;정렬&amp;nbsp;방식 &lt;br /&gt;병합방식&amp;nbsp;-&amp;nbsp;(2-way&amp;nbsp;병합,&amp;nbsp;n-way&amp;nbsp;병합) &lt;br /&gt;&lt;br /&gt;선택&amp;nbsp;정렬 &lt;br /&gt;전체&amp;nbsp;원소들&amp;nbsp;중에서&amp;nbsp;기준위치에&amp;nbsp;맞는&amp;nbsp;원소를&amp;nbsp;선택하고&amp;nbsp;자리를&amp;nbsp;교환하는&amp;nbsp;방식(작은&amp;nbsp;순서대로&amp;nbsp;그&amp;nbsp;자리에&amp;nbsp;있는&amp;nbsp;원소와&amp;nbsp;교환한다고&amp;nbsp;생각해도&amp;nbsp;됨) &lt;br /&gt;평균&amp;nbsp;시간복잡도&amp;nbsp;:&amp;nbsp;O(n&amp;sup2;) &lt;br /&gt;{&amp;nbsp;69&amp;nbsp;10&amp;nbsp;30&amp;nbsp;2&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22&amp;nbsp;} &lt;br /&gt;69&amp;nbsp;10&amp;nbsp;30&amp;nbsp;2&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22&amp;nbsp;:&amp;nbsp;69,&amp;nbsp;2&amp;nbsp;교환 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;10&amp;nbsp;30&amp;nbsp;69&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22&amp;nbsp;:&amp;nbsp;10,&amp;nbsp;8&amp;nbsp;교환 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;8&amp;nbsp;30&amp;nbsp;69&amp;nbsp;16&amp;nbsp;10&amp;nbsp;31&amp;nbsp;22&amp;nbsp;:&amp;nbsp;30,&amp;nbsp;10&amp;nbsp;교환 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;8&amp;nbsp;10&amp;nbsp;69&amp;nbsp;16&amp;nbsp;30&amp;nbsp;31&amp;nbsp;22&amp;nbsp;:&amp;nbsp;69,&amp;nbsp;16&amp;nbsp;교환 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;8&amp;nbsp;10&amp;nbsp;16&amp;nbsp;69&amp;nbsp;30&amp;nbsp;31&amp;nbsp;22&amp;nbsp;:&amp;nbsp;69,&amp;nbsp;22&amp;nbsp;교환 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;8&amp;nbsp;10&amp;nbsp;16&amp;nbsp;22&amp;nbsp;30&amp;nbsp;31&amp;nbsp;69&amp;nbsp;:&amp;nbsp;최종 &lt;br /&gt;&lt;br /&gt;버블&amp;nbsp;정렬 &lt;br /&gt;인접한&amp;nbsp;두&amp;nbsp;개의&amp;nbsp;원소를&amp;nbsp;비교하여&amp;nbsp;자리를&amp;nbsp;교환하는&amp;nbsp;방식 &lt;br /&gt;평균&amp;nbsp;시간복잡도&amp;nbsp;:&amp;nbsp;O(n&amp;sup2;) &lt;br /&gt;&lt;br /&gt;퀵&amp;nbsp;정렬 &lt;br /&gt;정렬할&amp;nbsp;전체&amp;nbsp;원소에&amp;nbsp;대해서&amp;nbsp;정렬을&amp;nbsp;수행하지&amp;nbsp;않고,&amp;nbsp;기준&amp;nbsp;값을&amp;nbsp;중심으로&amp;nbsp;왼쪽&amp;nbsp;부분&amp;nbsp;집합과&amp;nbsp;오른쪽&amp;nbsp;부분&amp;nbsp;집합으로&amp;nbsp;분할하여&amp;nbsp;정렬하는&amp;nbsp;방법 &lt;br /&gt;&lt;br /&gt;왼쪽&amp;nbsp;중앙값&amp;nbsp;먼저 &lt;br /&gt;&lt;br /&gt;45&amp;nbsp;15&amp;nbsp;50&amp;nbsp;/&amp;nbsp;69&amp;nbsp;10&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;71&amp;nbsp;2&amp;nbsp;/&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31 &lt;br /&gt;x&amp;nbsp;&amp;gt;=&amp;nbsp;20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x&amp;nbsp;&amp;lt;&amp;nbsp;20 &lt;br /&gt;&lt;br /&gt;45,&amp;nbsp;8&amp;nbsp;교환 &lt;br /&gt;&lt;br /&gt;8&amp;nbsp;15&amp;nbsp;50&amp;nbsp;/&amp;nbsp;69&amp;nbsp;10&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;71&amp;nbsp;2&amp;nbsp;/&amp;nbsp;16&amp;nbsp;45&amp;nbsp;31 &lt;br /&gt;x&amp;nbsp;&amp;gt;=&amp;nbsp;20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x&amp;nbsp;&amp;lt;&amp;nbsp;20 &lt;br /&gt;50,&amp;nbsp;16&amp;nbsp;교환 &lt;br /&gt;&lt;br /&gt;8&amp;nbsp;15&amp;nbsp;16&amp;nbsp;/&amp;nbsp;69&amp;nbsp;10&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;71&amp;nbsp;2&amp;nbsp;/&amp;nbsp;50&amp;nbsp;45&amp;nbsp;31 &lt;br /&gt;x&amp;nbsp;&amp;gt;=&amp;nbsp;20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x&amp;nbsp;&amp;lt;&amp;nbsp;20 &lt;br /&gt;&lt;br /&gt;69,&amp;nbsp;2&amp;nbsp;교환&amp;nbsp;,&amp;nbsp;20&amp;nbsp;확정 &lt;br /&gt;&lt;br /&gt;오른쪽&amp;nbsp;중앙값&amp;nbsp;먼저 &lt;br /&gt;8&amp;nbsp;15&amp;nbsp;16&amp;nbsp;/&amp;nbsp;2&amp;nbsp;10&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;71&amp;nbsp;69&amp;nbsp;/&amp;nbsp;50&amp;nbsp;45&amp;nbsp;31 &lt;br /&gt;x&amp;nbsp;&amp;gt;=&amp;nbsp;16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x&amp;nbsp;&amp;lt;&amp;nbsp;16 &lt;br /&gt;&lt;br /&gt;16,&amp;nbsp;10&amp;nbsp;교환&amp;nbsp;,&amp;nbsp;16&amp;nbsp;확정 &lt;br /&gt;&lt;br /&gt;8&amp;nbsp;15&amp;nbsp;10&amp;nbsp;/&amp;nbsp;2&amp;nbsp;16&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;71&amp;nbsp;69&amp;nbsp;/&amp;nbsp;50&amp;nbsp;45&amp;nbsp;31 &lt;br /&gt;x&amp;nbsp;&amp;gt;=&amp;nbsp;16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x&amp;nbsp;&amp;lt;&amp;nbsp;16 &lt;br /&gt;&lt;br /&gt;15,&amp;nbsp;2&amp;nbsp;교환&amp;nbsp;,&amp;nbsp;15&amp;nbsp;확정 &lt;br /&gt;&lt;br /&gt;8&amp;nbsp;2&amp;nbsp;10&amp;nbsp;/&amp;nbsp;15&amp;nbsp;16&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;71&amp;nbsp;69&amp;nbsp;/&amp;nbsp;50&amp;nbsp;45&amp;nbsp;31 &lt;br /&gt;x&amp;nbsp;&amp;gt;=&amp;nbsp;16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x&amp;nbsp;&amp;lt;&amp;nbsp;16 &lt;br /&gt;&lt;br /&gt;2,&amp;nbsp;8&amp;nbsp;교환&amp;nbsp;,&amp;nbsp;2,8&amp;nbsp;확정 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;8&amp;nbsp;10&amp;nbsp;/&amp;nbsp;15&amp;nbsp;16&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;71&amp;nbsp;69&amp;nbsp;/&amp;nbsp;50&amp;nbsp;45&amp;nbsp;31 &lt;br /&gt;x&amp;nbsp;&amp;gt;=&amp;nbsp;20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x&amp;nbsp;&amp;lt;&amp;nbsp;20 &lt;br /&gt;&lt;br /&gt;15&amp;nbsp;확정 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;8&amp;nbsp;10&amp;nbsp;/&amp;nbsp;15&amp;nbsp;16&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;71&amp;nbsp;69&amp;nbsp;/&amp;nbsp;50&amp;nbsp;45&amp;nbsp;31&amp;nbsp;:&amp;nbsp;최종 &lt;br /&gt;&lt;br /&gt;삽입&amp;nbsp;정렬 &lt;br /&gt;정렬되어있는&amp;nbsp;부분집합에&amp;nbsp;정렬할&amp;nbsp;새로운&amp;nbsp;원소의&amp;nbsp;위치를&amp;nbsp;찾아&amp;nbsp;삽입하는&amp;nbsp;방법 &lt;br /&gt;부분집합&amp;nbsp;S와&amp;nbsp;U로&amp;nbsp;나눠&amp;nbsp;S는&amp;nbsp;정렬된&amp;nbsp;앞부분&amp;nbsp;원소,&amp;nbsp;U는&amp;nbsp;정렬되지&amp;nbsp;않은&amp;nbsp;나머지&amp;nbsp;원소들을&amp;nbsp;의미한다 &lt;br /&gt;평균&amp;nbsp;시간복잡도&amp;nbsp;:&amp;nbsp;O(n&amp;sup2;) &lt;br /&gt;&lt;br /&gt;{&amp;nbsp;69&amp;nbsp;10&amp;nbsp;30&amp;nbsp;2&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;10&amp;nbsp;69&amp;nbsp;/&amp;nbsp;30&amp;nbsp;2&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22 &lt;br /&gt;&lt;br /&gt;10&amp;nbsp;30&amp;nbsp;69&amp;nbsp;/&amp;nbsp;2&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;10&amp;nbsp;30&amp;nbsp;69&amp;nbsp;/&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;10&amp;nbsp;16&amp;nbsp;30&amp;nbsp;69&amp;nbsp;/&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;8&amp;nbsp;10&amp;nbsp;16&amp;nbsp;30&amp;nbsp;69&amp;nbsp;/&amp;nbsp;31&amp;nbsp;22 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;8&amp;nbsp;10&amp;nbsp;16&amp;nbsp;30&amp;nbsp;31&amp;nbsp;69&amp;nbsp;/&amp;nbsp;22 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;8&amp;nbsp;10&amp;nbsp;16&amp;nbsp;22&amp;nbsp;30&amp;nbsp;31&amp;nbsp;69&amp;nbsp;:&amp;nbsp;최종 &lt;br /&gt;&lt;br /&gt;셀&amp;nbsp;정렬 &lt;br /&gt;일정한&amp;nbsp;간격으로&amp;nbsp;떨어져있는&amp;nbsp;자료들끼리&amp;nbsp;부분집합을&amp;nbsp;구성하고&amp;nbsp;각&amp;nbsp;부분집합에&amp;nbsp;있는&amp;nbsp;원소들에&amp;nbsp;대해서&amp;nbsp;삽입&amp;nbsp;정렬을&amp;nbsp;수행하는&amp;nbsp;작업을&amp;nbsp;반복하면서&amp;nbsp;전체&amp;nbsp;원소들을&amp;nbsp;정렬하는&amp;nbsp;방법 &lt;br /&gt;일반적인&amp;nbsp;시간복잡도&amp;nbsp;:&amp;nbsp;O(n&amp;sup1;.&amp;sup2;⁵) &lt;br /&gt;{&amp;nbsp;69&amp;nbsp;10&amp;nbsp;30&amp;nbsp;2&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22&amp;nbsp;} &lt;br /&gt;원소&amp;nbsp;개수가&amp;nbsp;8개이므로&amp;nbsp;h=4 &lt;br /&gt;&lt;br /&gt;16&amp;nbsp;10&amp;nbsp;30&amp;nbsp;2&amp;nbsp;69&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22&amp;nbsp;:&amp;nbsp;69,&amp;nbsp;16&amp;nbsp;교환 &lt;br /&gt;16&amp;nbsp;8&amp;nbsp;30&amp;nbsp;2&amp;nbsp;69&amp;nbsp;10&amp;nbsp;31&amp;nbsp;22&amp;nbsp;:&amp;nbsp;10,&amp;nbsp;8&amp;nbsp;교환 &lt;br /&gt;16&amp;nbsp;8&amp;nbsp;30&amp;nbsp;2&amp;nbsp;69&amp;nbsp;10&amp;nbsp;31&amp;nbsp;22&amp;nbsp;:&amp;nbsp;30,&amp;nbsp;31&amp;nbsp;그대로 &lt;br /&gt;16&amp;nbsp;8&amp;nbsp;30&amp;nbsp;2&amp;nbsp;69&amp;nbsp;10&amp;nbsp;31&amp;nbsp;22&amp;nbsp;:&amp;nbsp;2,&amp;nbsp;22&amp;nbsp;그대로 &lt;br /&gt;&lt;br /&gt;h=2로&amp;nbsp;변경 &lt;br /&gt;첫번째&amp;nbsp;부분집합&amp;nbsp;{&amp;nbsp;16&amp;nbsp;30&amp;nbsp;69&amp;nbsp;31&amp;nbsp;} &lt;br /&gt;두번째&amp;nbsp;부분집합&amp;nbsp;{&amp;nbsp;8&amp;nbsp;2&amp;nbsp;10&amp;nbsp;22&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;16&amp;nbsp;8&amp;nbsp;30&amp;nbsp;2&amp;nbsp;31&amp;nbsp;10&amp;nbsp;69&amp;nbsp;22&amp;nbsp;:&amp;nbsp;69,&amp;nbsp;31&amp;nbsp;교환 &lt;br /&gt;16&amp;nbsp;2&amp;nbsp;30&amp;nbsp;8&amp;nbsp;31&amp;nbsp;10&amp;nbsp;69&amp;nbsp;22&amp;nbsp;:&amp;nbsp;8,&amp;nbsp;2&amp;nbsp;교환 &lt;br /&gt;&lt;br /&gt;h=1로&amp;nbsp;변경 &lt;br /&gt;&lt;br /&gt;2&amp;nbsp;8&amp;nbsp;10&amp;nbsp;16&amp;nbsp;22&amp;nbsp;30&amp;nbsp;31&amp;nbsp;69&amp;nbsp;:&amp;nbsp;최종 &lt;br /&gt;&lt;br /&gt;병합&amp;nbsp;정렬 &lt;br /&gt;여러&amp;nbsp;개의&amp;nbsp;정렬된&amp;nbsp;자료의&amp;nbsp;집합을&amp;nbsp;병합하여&amp;nbsp;한&amp;nbsp;개의&amp;nbsp;정렬된&amp;nbsp;집합으로&amp;nbsp;만드는&amp;nbsp;방법 &lt;br /&gt;2-way&amp;nbsp;=&amp;nbsp;2의&amp;nbsp;배수&amp;nbsp;-&amp;gt;&amp;nbsp;2&amp;nbsp;,&amp;nbsp;4&amp;nbsp;,&amp;nbsp;8&amp;nbsp;,&amp;nbsp;10&amp;nbsp;... &lt;br /&gt;3-way&amp;nbsp;=&amp;nbsp;3의&amp;nbsp;배수&amp;nbsp;-&amp;gt;&amp;nbsp;3&amp;nbsp;,&amp;nbsp;6&amp;nbsp;,&amp;nbsp;9&amp;nbsp;,&amp;nbsp;12&amp;nbsp;... &lt;br /&gt;n-way&amp;nbsp;=&amp;nbsp;n의&amp;nbsp;배수 &lt;br /&gt;&lt;br /&gt;{&amp;nbsp;69&amp;nbsp;10&amp;nbsp;30&amp;nbsp;2&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;69&amp;nbsp;10&amp;nbsp;30&amp;nbsp;2&amp;nbsp;/&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22&amp;nbsp;로&amp;nbsp;두갈래로&amp;nbsp;나눔 &lt;br /&gt;69&amp;nbsp;10&amp;nbsp;/&amp;nbsp;30&amp;nbsp;2&amp;nbsp;/&amp;nbsp;16&amp;nbsp;8&amp;nbsp;/&amp;nbsp;31&amp;nbsp;22&amp;nbsp;로&amp;nbsp;각각&amp;nbsp;두갈래로&amp;nbsp;나눔 &lt;br /&gt;69&amp;nbsp;/&amp;nbsp;10&amp;nbsp;/&amp;nbsp;30&amp;nbsp;/&amp;nbsp;2&amp;nbsp;/&amp;nbsp;16&amp;nbsp;/&amp;nbsp;8&amp;nbsp;/&amp;nbsp;31&amp;nbsp;/&amp;nbsp;22&amp;nbsp;로&amp;nbsp;각각&amp;nbsp;모두&amp;nbsp;나눔 &lt;br /&gt;10&amp;nbsp;69&amp;nbsp;/&amp;nbsp;2&amp;nbsp;30&amp;nbsp;/&amp;nbsp;8&amp;nbsp;16&amp;nbsp;/&amp;nbsp;22&amp;nbsp;31&amp;nbsp;로&amp;nbsp;순서대로&amp;nbsp;묶음 &lt;br /&gt;2&amp;nbsp;10&amp;nbsp;30&amp;nbsp;69&amp;nbsp;/&amp;nbsp;8&amp;nbsp;16&amp;nbsp;22&amp;nbsp;31&amp;nbsp;로&amp;nbsp;순서대로&amp;nbsp;묶음 &lt;br /&gt;2&amp;nbsp;8&amp;nbsp;10&amp;nbsp;16&amp;nbsp;22&amp;nbsp;30&amp;nbsp;31&amp;nbsp;69&amp;nbsp;로&amp;nbsp;모두&amp;nbsp;순서대로&amp;nbsp;묶음 &lt;br /&gt;&lt;br /&gt;문제&amp;nbsp;{&amp;nbsp;45&amp;nbsp;15&amp;nbsp;50&amp;nbsp;69&amp;nbsp;10&amp;nbsp;20&amp;nbsp;30&amp;nbsp;71&amp;nbsp;2&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22&amp;nbsp;1&amp;nbsp;63&amp;nbsp;5&amp;nbsp;} &lt;br /&gt;&lt;br /&gt;45&amp;nbsp;15&amp;nbsp;50&amp;nbsp;69&amp;nbsp;10&amp;nbsp;20&amp;nbsp;30&amp;nbsp;71&amp;nbsp;2&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;22&amp;nbsp;1&amp;nbsp;63&amp;nbsp;5 &lt;br /&gt;45&amp;nbsp;15&amp;nbsp;50&amp;nbsp;69&amp;nbsp;10&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;71&amp;nbsp;2&amp;nbsp;16&amp;nbsp;8&amp;nbsp;31&amp;nbsp;/&amp;nbsp;22&amp;nbsp;1&amp;nbsp;63&amp;nbsp;5&amp;nbsp;n&amp;nbsp;n &lt;br /&gt;45&amp;nbsp;15&amp;nbsp;/&amp;nbsp;50&amp;nbsp;69&amp;nbsp;/&amp;nbsp;10&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;71&amp;nbsp;/&amp;nbsp;2&amp;nbsp;16&amp;nbsp;/&amp;nbsp;8&amp;nbsp;31&amp;nbsp;/&amp;nbsp;22&amp;nbsp;1&amp;nbsp;/&amp;nbsp;63&amp;nbsp;5 &lt;br /&gt;45&amp;nbsp;/&amp;nbsp;15&amp;nbsp;/&amp;nbsp;50&amp;nbsp;/&amp;nbsp;69&amp;nbsp;/&amp;nbsp;10&amp;nbsp;/&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;/&amp;nbsp;71&amp;nbsp;/&amp;nbsp;2&amp;nbsp;/&amp;nbsp;16&amp;nbsp;/&amp;nbsp;8&amp;nbsp;/&amp;nbsp;31&amp;nbsp;/&amp;nbsp;22&amp;nbsp;/&amp;nbsp;1&amp;nbsp;/&amp;nbsp;63&amp;nbsp;/&amp;nbsp;5 &lt;br /&gt;15&amp;nbsp;45&amp;nbsp;/&amp;nbsp;50&amp;nbsp;69&amp;nbsp;/&amp;nbsp;10&amp;nbsp;20&amp;nbsp;/&amp;nbsp;30&amp;nbsp;71&amp;nbsp;/&amp;nbsp;2&amp;nbsp;16&amp;nbsp;/&amp;nbsp;8&amp;nbsp;31&amp;nbsp;/&amp;nbsp;1&amp;nbsp;22&amp;nbsp;/&amp;nbsp;5&amp;nbsp;63 &lt;br /&gt;10&amp;nbsp;15&amp;nbsp;20&amp;nbsp;45&amp;nbsp;50&amp;nbsp;69&amp;nbsp;/&amp;nbsp;2&amp;nbsp;8&amp;nbsp;16&amp;nbsp;30&amp;nbsp;31&amp;nbsp;71&amp;nbsp;/&amp;nbsp;1&amp;nbsp;5&amp;nbsp;22&amp;nbsp;63 &lt;br /&gt;&lt;br /&gt;1&amp;nbsp;2&amp;nbsp;5&amp;nbsp;8&amp;nbsp;10&amp;nbsp;15&amp;nbsp;16&amp;nbsp;20&amp;nbsp;22&amp;nbsp;30&amp;nbsp;31&amp;nbsp;45&amp;nbsp;50&amp;nbsp;63&amp;nbsp;69&amp;nbsp;71&amp;nbsp;:&amp;nbsp;최종 &lt;/p&gt;</description>
      <category>자료구조 실습</category>
      <author>wlsn</author>
      <guid isPermaLink="true">https://wlsn3999.tistory.com/77</guid>
      <comments>https://wlsn3999.tistory.com/77#entry77comment</comments>
      <pubDate>Thu, 5 Dec 2024 16:33:19 +0900</pubDate>
    </item>
    <item>
      <title>14주차 강의 내용</title>
      <link>https://wlsn3999.tistory.com/76</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;제너릭&amp;nbsp;프로그래밍을&amp;nbsp;아주&amp;nbsp;쉽게&amp;nbsp;설명해볼게요.&lt;br /&gt;&lt;br /&gt;제너릭&amp;nbsp;프로그래밍은&amp;nbsp;&quot;모든&amp;nbsp;타입을&amp;nbsp;위한&amp;nbsp;만능&amp;nbsp;상자&quot;라고&amp;nbsp;생각하면&amp;nbsp;돼요.&lt;br /&gt;&lt;br /&gt;예를&amp;nbsp;들어,&amp;nbsp;우리가&amp;nbsp;&quot;사과&quot;와&amp;nbsp;&quot;바나나&quot;를&amp;nbsp;담는&amp;nbsp;상자를&amp;nbsp;만든다고&amp;nbsp;해볼게요.&amp;nbsp;일반&amp;nbsp;상자는&amp;nbsp;사과만&amp;nbsp;담을&amp;nbsp;수&amp;nbsp;있지만,&amp;nbsp;만능&amp;nbsp;상자는&amp;nbsp;사과도&amp;nbsp;담고&amp;nbsp;바나나도&amp;nbsp;담을&amp;nbsp;수&amp;nbsp;있어요.&lt;br /&gt;&lt;br /&gt;즉,&amp;nbsp;제너릭&amp;nbsp;프로그래밍은&amp;nbsp;특정한&amp;nbsp;데이터&amp;nbsp;타입에&amp;nbsp;국한되지&amp;nbsp;않고,&amp;nbsp;다양한&amp;nbsp;타입의&amp;nbsp;데이터를&amp;nbsp;담을&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;방법이에요.&amp;nbsp;이렇게&amp;nbsp;하면&amp;nbsp;코드를&amp;nbsp;더&amp;nbsp;간단하고&amp;nbsp;재사용하기&amp;nbsp;쉽게&amp;nbsp;만들어&amp;nbsp;줍니다.&lt;br /&gt;&lt;br /&gt;그래서&amp;nbsp;제너릭&amp;nbsp;프로그래밍을&amp;nbsp;사용하면&amp;nbsp;다양한&amp;nbsp;데이터에&amp;nbsp;대해&amp;nbsp;같은&amp;nbsp;로직을&amp;nbsp;쓸&amp;nbsp;수&amp;nbsp;있어서&amp;nbsp;편리해요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뤼튼에게 generic programming을 물었을 때의 답&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;generic programming은 자료형이 실행될 때 결정된다.&lt;/p&gt;
&lt;pre id=&quot;code_1733192465813&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;

int Max(int i, int j)
{
   return i&amp;gt;j ?i:j;
}
double Max(double i, double j)
{ 
   return i&amp;gt;j ?i:j;
}
char Max(char i, char j)
{
   return i&amp;gt;j ?i:j;
}
int main()
{
  cout&amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max(1,2)&amp;lt;&amp;lt;endl;
  cout&amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max(7.5,3.6)&amp;lt;&amp;lt;endl;
  cout&amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max('A','B');
  return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1733192439685&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
template &amp;lt;class T&amp;gt;
T Max(T i, T j)
{
	return i &amp;gt; j ? i : j;
}
int main()
{
	cout &amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max(1, 2) &amp;lt;&amp;lt; endl;
	cout &amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max(7.5, 3.6) &amp;lt;&amp;lt; endl;
	cout &amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max('A', 'B');
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째 소스를 generic programming으로 바꾼 결과다 int를 T로 바꾸고 template을 쓴다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1733192633118&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt; // 입력과 출력을 위한 헤더 파일 포함
using std::cout;   // std 네임스페이스의 cout 사용
using std::endl;   // std 네임스페이스의 endl 사용

// 제너릭 함수 정의: T는 타입 매개변수
template &amp;lt;class T&amp;gt;
T Max(T i, T j) // 두 개의 같은 타입 인자를 받아서 최대값을 반환
{
    return i &amp;gt; j ? i : j; // i가 j보다 크면 i를, 그렇지 않으면 j를 반환
}

int main() // 프로그램의 시작점
{
    // 정수형 인자를 사용하여 Max 함수 호출
    cout &amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max(1, 2) &amp;lt;&amp;lt; endl; // 결과: 2

    // 실수형 인자를 사용하여 Max 함수 호출
    cout &amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max(7.5, 3.6) &amp;lt;&amp;lt; endl; // 결과: 7.5

    // 문자형 인자를 사용하여 Max 함수 호출
    cout &amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max('A', 'B'); // 결과: B

    return 0; // 프로그램 종료
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뤼튼에게 주석을 달아달라고 했을 때의 답이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째는 정수형, 두번째는 실수형, 세번째는 문자형이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;957&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W5Jvb/btsK4u9SeSy/DIqlpfAxpkQJ5kckPRIFoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W5Jvb/btsK4u9SeSy/DIqlpfAxpkQJ5kckPRIFoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W5Jvb/btsK4u9SeSy/DIqlpfAxpkQJ5kckPRIFoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW5Jvb%2FbtsK4u9SeSy%2FDIqlpfAxpkQJ5kckPRIFoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1181&quot; height=&quot;957&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;957&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;865&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E4Lg7/btsK5aCVmZU/3uUJ2xQktKxa12kCyqkA4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E4Lg7/btsK5aCVmZU/3uUJ2xQktKxa12kCyqkA4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E4Lg7/btsK5aCVmZU/3uUJ2xQktKxa12kCyqkA4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE4Lg7%2FbtsK5aCVmZU%2F3uUJ2xQktKxa12kCyqkA4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1180&quot; height=&quot;865&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;865&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;556&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IEjsr/btsK3Q6H6Ov/ybh9GXMuIx4jvK1410kXGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IEjsr/btsK3Q6H6Ov/ybh9GXMuIx4jvK1410kXGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IEjsr/btsK3Q6H6Ov/ybh9GXMuIx4jvK1410kXGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIEjsr%2FbtsK3Q6H6Ov%2Fybh9GXMuIx4jvK1410kXGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1179&quot; height=&quot;556&quot; data-origin-width=&quot;1179&quot; data-origin-height=&quot;556&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;599&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lu0ho/btsK3fFHe1s/vP3smF9SkIoIN1D3jsrG50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lu0ho/btsK3fFHe1s/vP3smF9SkIoIN1D3jsrG50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lu0ho/btsK3fFHe1s/vP3smF9SkIoIN1D3jsrG50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flu0ho%2FbtsK3fFHe1s%2FvP3smF9SkIoIN1D3jsrG50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1180&quot; height=&quot;599&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;599&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뤼튼에게 언어별로 generic programming을 알려달라고 했을 때의 답이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1855&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bV3Zc9/btsK5Bz95mo/Ikgv6HXRgA87zNSAyZHE91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bV3Zc9/btsK5Bz95mo/Ikgv6HXRgA87zNSAyZHE91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bV3Zc9/btsK5Bz95mo/Ikgv6HXRgA87zNSAyZHE91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbV3Zc9%2FbtsK5Bz95mo%2FIkgv6HXRgA87zNSAyZHE91%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1855&quot; height=&quot;685&quot; data-origin-width=&quot;1855&quot; data-origin-height=&quot;685&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금까지 했던 template으로 T로 바꿨었던 내용이 generic funtion이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1733193010293&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
template &amp;lt;typename T&amp;gt;
T Max(T i, T j)
{
	return i &amp;gt; j ? i : j;
}
int main()
{
	cout &amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max(1, 2) &amp;lt;&amp;lt; endl;
	cout &amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max(7.5, 3.6) &amp;lt;&amp;lt; endl;
	cout &amp;lt;&amp;lt; &quot;Max값은=&quot; &amp;lt;&amp;lt; Max('A', 'B');
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 소스처럼 class를 typename으로 바꿔도 내용은 제대로 나온다.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 157px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 74px;&quot;&gt;
&lt;td style=&quot;width: 12.907%; height: 74px; text-align: center;&quot;&gt;class&lt;/td&gt;
&lt;td style=&quot;width: 87.093%; height: 74px;&quot;&gt;일반적으로&amp;nbsp;클래스&amp;nbsp;타입&amp;nbsp;매개변수를&amp;nbsp;정의할&amp;nbsp;때&amp;nbsp;사용됩니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 83px;&quot;&gt;
&lt;td style=&quot;width: 12.907%; height: 83px; text-align: center;&quot;&gt;typename&lt;/td&gt;
&lt;td style=&quot;width: 87.093%; height: 83px;&quot;&gt;타입&amp;nbsp;매개변수를&amp;nbsp;좀&amp;nbsp;더&amp;nbsp;일반적으로&amp;nbsp;나타낼&amp;nbsp;때&amp;nbsp;사용됩니다.&amp;nbsp;특히,&amp;nbsp;템플릿의&amp;nbsp;중첩&amp;nbsp;타입을&amp;nbsp;참조할&amp;nbsp;때&amp;nbsp;더&amp;nbsp;자주&amp;nbsp;사용됩니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1733193326221&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;

template &amp;lt;class T1, class T2, class T3&amp;gt; void fun(T1 x, T2 y, T3 z)
{     // 두 개의 매개변수 자료형이 T1과 T2로 다르다.
	cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &quot;  &quot; &amp;lt;&amp;lt; y &amp;lt;&amp;lt; &amp;lt;&amp;lt; &quot; &quot;&amp;lt;&amp;lt; z &amp;lt;&amp;lt; endl;
}
int main()
{
	fun(&quot;Han&quot;, 30, 2); // T1은 문자열(const char *),T2는 정수형(int)
	fun(25, 50.5, 'a');  // T1은 정수형(int), T2는 double형 
	fun(1, 2, 1.5);
	fun('a', 3.5, 'b');
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;시험에서 class를 안써서 틀리는 경우가 종종 있다고 한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보통 결정되지 않은 자료형에서는 T1, T2, T3등 Tn으로 정의한다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1단계 template 쓰고 T1, T2 정의하기&lt;/p&gt;
&lt;pre id=&quot;code_1733193721919&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;

template&amp;lt;class T1, class T2&amp;gt;
class CCC1
{
private:
	int x;
	int y;
public:
	CCC1(int xx, int yy) { x = xx; y = yy; }
	void Print() { cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; ',' &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl; }
};
class CCC2
{
private:
	double x;
	double y;
public:
	CCC2(double xx, double yy) { x = xx; y = yy; }
	void Print() { cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; ',' &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl; }
};
class CCC3
{
private:
	char x;
	const char* y;
public:
	CCC3(char xx, const char* yy) { x = xx; y = yy; }
	void Print() { cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; ',' &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl; }
};

int main()
{
	CCC1 c1(10, 20); //int
	CCC2 c2(3.5, 5.5); //double
	CCC3 c3('I', &quot;Love You!&quot;); //char

	c1.Print();
	c2.Print();
	c3.Print();
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2단계 template class 완성&lt;/p&gt;
&lt;pre id=&quot;code_1733193814197&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;

template&amp;lt;class T1, class T2&amp;gt;
class CCC
{
private:
	T1 x;
	T2 y;
public:
	CCC(T1 xx, T2 yy) { x = xx; y = yy; }
	void Print() { cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; ',' &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl; }
};
int main()
{
	CCC1 c1(10, 20); //int
	CCC2 c2(3.5, 5.5); //double
	CCC3 c3('I', &quot;Love You!&quot;); //char

	c1.Print();
	c2.Print();
	c3.Print();
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3단계 main 함수에서 에러 고치기&lt;/p&gt;
&lt;pre id=&quot;code_1733193973496&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;

template&amp;lt;class T1, class T2&amp;gt;
class CCC
{
private:
	T1 x;
	T2 y;
public:
	CCC(T1 xx, T2 yy) { x = xx; y = yy; }
	void Print() { cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; ',' &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl; }
};
int main()
{
	CCC&amp;lt;int, int&amp;gt; c1(10, 20); //int
	CCC&amp;lt;double, double&amp;gt; c2(3.5, 5.5); //double
	CCC&amp;lt;char, const char *&amp;gt; c3('I', &quot;Love You!&quot;); //char

	c1.Print();
	c2.Print();
	c3.Print();
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;템플릿을 만들고 결정되지 않은 자료형은 객체 앞에 꺽쇠를 넣어 지정해줘야 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1733194069217&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt; // 입력과 출력을 위한 헤더 파일 포함
using std::cout;   // std 네임스페이스의 cout 사용
using std::endl;   // std 네임스페이스의 endl 사용

// 두 개의 타입 매개변수를 받는 템플릿 클래스 CCC 정의
template&amp;lt;class T1, class T2&amp;gt;
class CCC {
private:
    T1 x; // 타입 T1의 변수 x
    T2 y; // 타입 T2의 변수 y
public:
    // 생성자: 두 개의 매개변수를 받아서 x와 y에 초기화
    CCC(T1 xx, T2 yy) { 
        x = xx; 
        y = yy; 
    }
    
    // Print 메서드: x와 y의 값을 출력
    void Print() { 
        cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; ',' &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl; 
    }
};

int main() {
    // int 타입의 x와 y를 가지는 CCC 객체 c1 생성
    CCC&amp;lt;int, int&amp;gt; c1(10, 20); // c1은 (10, 20)으로 초기화
    // double 타입의 x와 y를 가지는 CCC 객체 c2 생성
    CCC&amp;lt;double, double&amp;gt; c2(3.5, 5.5); // c2는 (3.5, 5.5)으로 초기화
    // char와 const char * 타입의 x와 y를 가지는 CCC 객체 c3 생성
    CCC&amp;lt;char, const char *&amp;gt; c3('I', &quot;Love You!&quot;); // c3는 ('I', &quot;Love You!&quot;)으로 초기화

    // 각 객체의 Print 메서드 호출
    c1.Print(); // 출력: 10, 20
    c2.Print(); // 출력: 3.5, 5.5
    c3.Print(); // 출력: I, Love You!

    return 0; // 프로그램 종료
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드는 뤼튼에게 주석을 달아달라고 했을 때의 모습이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;함수타입을 만들 때는 typename보단 class 를 더 선호하고 template을 만들 때는 class를 더 선호한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1868&quot; data-origin-height=&quot;611&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MWF47/btsK3wmTT0y/H8f8pPfAHWT1Fg4DYc32o0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MWF47/btsK3wmTT0y/H8f8pPfAHWT1Fg4DYc32o0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MWF47/btsK3wmTT0y/H8f8pPfAHWT1Fg4DYc32o0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMWF47%2FbtsK3wmTT0y%2FH8f8pPfAHWT1Fg4DYc32o0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1868&quot; height=&quot;611&quot; data-origin-width=&quot;1868&quot; data-origin-height=&quot;611&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;821&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKcpkP/btsK59pEFMy/9fT3a0VhZYPSVpNlONoU1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKcpkP/btsK59pEFMy/9fT3a0VhZYPSVpNlONoU1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKcpkP/btsK59pEFMy/9fT3a0VhZYPSVpNlONoU1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKcpkP%2FbtsK59pEFMy%2F9fT3a0VhZYPSVpNlONoU1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;885&quot; height=&quot;821&quot; data-origin-width=&quot;885&quot; data-origin-height=&quot;821&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vector 컨테이너&lt;/p&gt;
&lt;pre id=&quot;code_1733195287470&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;
using namespace std;
int main()
{
    vector &amp;lt;char&amp;gt; x;  //int x[10]와 차이
    // 여러 개 int형을 가지고 노는 배열 공간을 만들고 싶어요 
    x.push_back('a');
    x.push_back('b');
    x.push_back('c');
    for (int i = 0; i &amp;lt; x.size(); i++)
        cout &amp;lt;&amp;lt; x[i] &amp;lt;&amp;lt; endl;
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;길이가 자동으로 늘어나는 배열 int, double, char 등 자료형이 올 수 있음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1166&quot; data-origin-height=&quot;840&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lwXAo/btsK5p03mxC/GcqRIne8sWS60aTIllUi00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lwXAo/btsK5p03mxC/GcqRIne8sWS60aTIllUi00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lwXAo/btsK5p03mxC/GcqRIne8sWS60aTIllUi00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlwXAo%2FbtsK5p03mxC%2FGcqRIne8sWS60aTIllUi00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1166&quot; height=&quot;840&quot; data-origin-width=&quot;1166&quot; data-origin-height=&quot;840&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1037&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK2Pk1/btsK3REuRQx/w49XzCdXn1IUg3ncNBejIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK2Pk1/btsK3REuRQx/w49XzCdXn1IUg3ncNBejIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK2Pk1/btsK3REuRQx/w49XzCdXn1IUg3ncNBejIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK2Pk1%2FbtsK3REuRQx%2Fw49XzCdXn1IUg3ncNBejIk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1037&quot; height=&quot;454&quot; data-origin-width=&quot;1037&quot; data-origin-height=&quot;454&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시 함수&lt;/p&gt;
&lt;pre id=&quot;code_1733195450389&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;vector&amp;gt;

int main() {
    std::vector&amp;lt;int&amp;gt; vec; // 빈 벡터 생성

    vec.push_back(10);    // 10 추가
    vec.push_back(20);    // 20 추가
    vec.push_back(30);    // 30 추가

    std::cout &amp;lt;&amp;lt; &quot;Size: &quot; &amp;lt;&amp;lt; vec.size() &amp;lt;&amp;lt; std::endl; // 크기 출력
    std::cout &amp;lt;&amp;lt; &quot;Front: &quot; &amp;lt;&amp;lt; vec.front() &amp;lt;&amp;lt; std::endl; // 첫 번째 요소 출력
    std::cout &amp;lt;&amp;lt; &quot;Back: &quot; &amp;lt;&amp;lt; vec.back() &amp;lt;&amp;lt; std::endl; // 마지막 요소 출력

    vec.pop_back();       // 마지막 요소 제거

    std::cout &amp;lt;&amp;lt; &quot;Size after pop: &quot; &amp;lt;&amp;lt; vec.size() &amp;lt;&amp;lt; std::endl; // 크기 출력

    // 모든 요소 출력
    for (size_t i = 0; i &amp;lt; vec.size(); ++i) {
        std::cout &amp;lt;&amp;lt; vec[i] &amp;lt;&amp;lt; &quot; &quot;; // 인덱스를 사용한 접근
    }
    std::cout &amp;lt;&amp;lt; std::endl;

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이&amp;nbsp;예시&amp;nbsp;코드에서는&amp;nbsp;std::vector를&amp;nbsp;생성하고,&amp;nbsp;요소를&amp;nbsp;추가&amp;nbsp;및&amp;nbsp;제거하며,&amp;nbsp;다양한&amp;nbsp;멤버&amp;nbsp;함수를&amp;nbsp;사용하는&amp;nbsp;방법을&amp;nbsp;보여줍니다.&amp;nbsp;std::vector는&amp;nbsp;매우&amp;nbsp;유용한&amp;nbsp;동적&amp;nbsp;배열&amp;nbsp;구조로,&amp;nbsp;다양한&amp;nbsp;상황에서&amp;nbsp;자주&amp;nbsp;사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;언어별로 예외처리(Exception handling)에 관한 표&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;620&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsanSu/btsK40Ajbv2/HKtDGVOD4clRYzswigME31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsanSu/btsK40Ajbv2/HKtDGVOD4clRYzswigME31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsanSu/btsK40Ajbv2/HKtDGVOD4clRYzswigME31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsanSu%2FbtsK40Ajbv2%2FHKtDGVOD4clRYzswigME31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1181&quot; height=&quot;620&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;620&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2051&quot; data-origin-height=&quot;1239&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ScCxv/btsK5PLKnaX/vEqJpxF3IopIAHJaoALKm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ScCxv/btsK5PLKnaX/vEqJpxF3IopIAHJaoALKm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ScCxv/btsK5PLKnaX/vEqJpxF3IopIAHJaoALKm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FScCxv%2FbtsK5PLKnaX%2FvEqJpxF3IopIAHJaoALKm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2051&quot; height=&quot;1239&quot; data-origin-width=&quot;2051&quot; data-origin-height=&quot;1239&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행할 때 발생할 수 있는 오류를 잡아주는 것을 예외처리라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1707&quot; data-origin-height=&quot;1020&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/waCVh/btsK4MPYWel/hCKpTZMZ9aAnbTZo0zDKb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/waCVh/btsK4MPYWel/hCKpTZMZ9aAnbTZo0zDKb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/waCVh/btsK4MPYWel/hCKpTZMZ9aAnbTZo0zDKb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwaCVh%2FbtsK4MPYWel%2FhCKpTZMZ9aAnbTZo0zDKb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1707&quot; height=&quot;1020&quot; data-origin-width=&quot;1707&quot; data-origin-height=&quot;1020&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;try로 묶고 throw로 던지고 catch로 받아서 처리한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언어별로 조금 다르지만 try는 대부분 비슷하다고 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예외처리 1단계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행할 때 예외가 발생 할 수 있는 줄을 묶는다.&lt;/p&gt;
&lt;pre id=&quot;code_1733196549955&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::cin;
using std::endl;
void Div(double ja, double mo)
{
	try {
		cout &amp;lt;&amp;lt; &quot;결과:&quot; &amp;lt;&amp;lt; ja / mo &amp;lt;&amp;lt; endl;
	}
}
int main()
{
	double x, y;

	cout &amp;lt;&amp;lt; &quot;분자를 입력하세요=&quot;;
	cin &amp;gt;&amp;gt; x;
	cout &amp;lt;&amp;lt; &quot;분모를 입력하세요=&quot;;
	cin &amp;gt;&amp;gt; y;
	Div(x, y);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예외처리 2단계&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예욋값을 던짐(throw와 if를 추가)&lt;/p&gt;
&lt;pre id=&quot;code_1733196657923&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::cin;
using std::endl;
void Div(double ja, double mo)
{
	try {
		if(mo == 0) throw mo;
		cout &amp;lt;&amp;lt; &quot;결과:&quot; &amp;lt;&amp;lt; ja / mo &amp;lt;&amp;lt; endl;
	}
}
int main()
{
	double x, y;

	cout &amp;lt;&amp;lt; &quot;분자를 입력하세요=&quot;;
	cin &amp;gt;&amp;gt; x;
	cout &amp;lt;&amp;lt; &quot;분모를 입력하세요=&quot;;
	cin &amp;gt;&amp;gt; y;
	Div(x, y);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예외처리 3단계(완성)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오류가 발생되면 catch로 이동하여 처리됨&lt;/p&gt;
&lt;pre id=&quot;code_1733196816666&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::cin;
using std::endl;
void Div(double ja, double mo)
{
	try {
		if(mo == 0) throw mo;
		cout &amp;lt;&amp;lt; &quot;결과:&quot; &amp;lt;&amp;lt; ja / mo &amp;lt;&amp;lt; endl;
	}
	catch (double) {
		cout &amp;lt;&amp;lt; &quot;오류 : 0으로 나눌 수 없음&quot;;
	}
}
int main()
{
	double x, y;

	cout &amp;lt;&amp;lt; &quot;분자를 입력하세요=&quot;;
	cin &amp;gt;&amp;gt; x;
	cout &amp;lt;&amp;lt; &quot;분모를 입력하세요=&quot;;
	cin &amp;gt;&amp;gt; y;
	Div(x, y);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;catch는 예욋값의 자료형을 써준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;catch는 여러 개를 만들어 다양한 자료형을 넣어 그때마다 다르게 사용 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;567&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2QBEe/btsK5zWICRf/SQKlNRDkKMb8xc367CKLJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2QBEe/btsK5zWICRf/SQKlNRDkKMb8xc367CKLJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2QBEe/btsK5zWICRf/SQKlNRDkKMb8xc367CKLJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2QBEe%2FbtsK5zWICRf%2FSQKlNRDkKMb8xc367CKLJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1084&quot; height=&quot;567&quot; data-origin-width=&quot;1084&quot; data-origin-height=&quot;567&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;참조자(reference) 매우중요&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2019&quot; data-origin-height=&quot;760&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dPanQD/btsK44vYjP7/lwtGXEJp1kZ5KkYMD111v1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dPanQD/btsK44vYjP7/lwtGXEJp1kZ5KkYMD111v1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dPanQD/btsK44vYjP7/lwtGXEJp1kZ5KkYMD111v1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdPanQD%2FbtsK44vYjP7%2FlwtGXEJp1kZ5KkYMD111v1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2019&quot; height=&quot;760&quot; data-origin-width=&quot;2019&quot; data-origin-height=&quot;760&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1733197944583&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
int main(void)
{
    int x = 10;
    int &amp;amp;rx = x;
    cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &quot; &quot; &amp;lt;&amp;lt; rx &amp;lt;&amp;lt; endl;
    rx = rx + 10;
    cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &quot; &quot; &amp;lt;&amp;lt; rx &amp;lt;&amp;lt; endl; //참조자(rx)에 변화를 주면 그 타켓(x)도 변함
    x = x + 10;
    cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; &quot; &quot; &amp;lt;&amp;lt; rx &amp;lt;&amp;lt; endl; //타켓(x)에 변화를 주면 그 참조자(rx)도 변함
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참조자를 붙인다면 rx=x가 됨으로 둘다 동시에 변하게 되어 10 10 20 20 30 30이 나오게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;콘솔 파일 입출력은 시험범위는 19p, 24p, 27p,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2262&quot; data-origin-height=&quot;358&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DJ9zl/btsK5uaeaR7/XkOMwFto8lpvD9hVMekgkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DJ9zl/btsK5uaeaR7/XkOMwFto8lpvD9hVMekgkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DJ9zl/btsK5uaeaR7/XkOMwFto8lpvD9hVMekgkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDJ9zl%2FbtsK5uaeaR7%2FXkOMwFto8lpvD9hVMekgkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2262&quot; height=&quot;358&quot; data-origin-width=&quot;2262&quot; data-origin-height=&quot;358&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;212&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bC2LNb/btsK5HtDAQd/A74kTHhQErM9jXKKA0tPc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bC2LNb/btsK5HtDAQd/A74kTHhQErM9jXKKA0tPc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bC2LNb/btsK5HtDAQd/A74kTHhQErM9jXKKA0tPc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbC2LNb%2FbtsK5HtDAQd%2FA74kTHhQErM9jXKKA0tPc1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;770&quot; height=&quot;212&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;212&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;width는 출력폭을 지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;precision은 소수점 자릿수 지정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fill은 공백구간에 ch 문자를 채움&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fixed는 소수점 이하의 자릿수를 다룸&lt;/p&gt;
&lt;pre id=&quot;code_1733199417998&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;
int main() {
    cout &amp;lt;&amp;lt; &quot;디폴트\n&quot;;
    cout.fill('*');
    cout.width(10);
    cout &amp;lt;&amp;lt; -50 &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; &quot;[ * fill ]\n&quot;;
    cout.fill('#');
    cout.width(10);
    cout &amp;lt;&amp;lt; -50 &amp;lt;&amp;lt; endl;
    cout.width(10);
    cout &amp;lt;&amp;lt; 100.25 &amp;lt;&amp;lt; endl;
    cout.width(10);
    cout &amp;lt;&amp;lt; &quot;HanSH&quot; &amp;lt;&amp;lt; endl;
    cout.fill(' ');
    cout.precision(5);  //소수점을 제외한 전체 자리수 
    cout &amp;lt;&amp;lt; 12.34567 &amp;lt;&amp;lt; endl;
    cout &amp;lt;&amp;lt; fixed;  //소수점 이하의 자리수만 다루게 함 
    cout.precision(1);
    cout &amp;lt;&amp;lt; 12.34567 &amp;lt;&amp;lt; endl;
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;153&quot; data-origin-height=&quot;241&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9cJTW/btsK58dpXFi/iHpNaNfKI78sw7Bdo2oVW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9cJTW/btsK58dpXFi/iHpNaNfKI78sw7Bdo2oVW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9cJTW/btsK58dpXFi/iHpNaNfKI78sw7Bdo2oVW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9cJTW%2FbtsK58dpXFi%2FiHpNaNfKI78sw7Bdo2oVW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;153&quot; height=&quot;241&quot; data-origin-width=&quot;153&quot; data-origin-height=&quot;241&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1648&quot; data-origin-height=&quot;895&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IVLJD/btsK4YbNz0y/IDiKaV13OjCCRevNNXzAAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IVLJD/btsK4YbNz0y/IDiKaV13OjCCRevNNXzAAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IVLJD/btsK4YbNz0y/IDiKaV13OjCCRevNNXzAAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIVLJD%2FbtsK4YbNz0y%2FIDiKaV13OjCCRevNNXzAAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1648&quot; height=&quot;895&quot; data-origin-width=&quot;1648&quot; data-origin-height=&quot;895&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 소스가 더 쉬워보이지만 &amp;lt;iomanip&amp;gt;를 포함시켜줘야된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;618&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ctt2io/btsK3PmAOmc/EXQrzJ1m9S4Ms7E5iRWYLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ctt2io/btsK3PmAOmc/EXQrzJ1m9S4Ms7E5iRWYLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ctt2io/btsK3PmAOmc/EXQrzJ1m9S4Ms7E5iRWYLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fctt2io%2FbtsK3PmAOmc%2FEXQrzJ1m9S4Ms7E5iRWYLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1013&quot; height=&quot;618&quot; data-origin-width=&quot;1013&quot; data-origin-height=&quot;618&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1779&quot; data-origin-height=&quot;667&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dHoJXr/btsK49qHnlI/cZu1zhdd6dmuK5CLlWm1v1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dHoJXr/btsK49qHnlI/cZu1zhdd6dmuK5CLlWm1v1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dHoJXr/btsK49qHnlI/cZu1zhdd6dmuK5CLlWm1v1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdHoJXr%2FbtsK49qHnlI%2FcZu1zhdd6dmuK5CLlWm1v1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1779&quot; height=&quot;667&quot; data-origin-width=&quot;1779&quot; data-origin-height=&quot;667&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1733200257790&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;fstream&amp;gt;
using namespace std;

int main()
{
    ofstream fout(&quot;a1.txt&quot;);
    fout &amp;lt;&amp;lt; &quot;abcddatw\n&quot;;
    cout &amp;lt;&amp;lt; &quot;abc\n&quot;;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ofstream을 써 메모장으로 출력하게 만든 소스다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cout은 abc로 출력이 되지만 메모장에 저장되는 값은 abcddatw다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1733200540548&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;fstream&amp;gt;
using namespace std;

int main()
{
    int x;

    ofstream fout(&quot;a.txt&quot;);
    fout &amp;lt;&amp;lt; 2345;
    fout.close();

    ifstream fin(&quot;a.txt&quot;);
    fin &amp;gt;&amp;gt; x;
    cout &amp;lt;&amp;lt; x;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일을 만들었으면 다른 파일을 실행하기 전에 무조건 close로 닫아야 한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 파일은 ofstream으로 a라는 메모장파일을 만들어 2345라는 값을 저장한 후 출력하게 하는 코드다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ppt 출처 : Smlie Han&lt;/p&gt;</description>
      <category>C++</category>
      <author>wlsn</author>
      <guid isPermaLink="true">https://wlsn3999.tistory.com/76</guid>
      <comments>https://wlsn3999.tistory.com/76#entry76comment</comments>
      <pubDate>Tue, 3 Dec 2024 11:52:30 +0900</pubDate>
    </item>
    <item>
      <title>14주차 예습과제</title>
      <link>https://wlsn3999.tistory.com/75</link>
      <description>&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;1. 강의 주제 : 템플릿의 기본 개념&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;2. 강의 키워드(주요 단어) : 팀플릿, generic, reference&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;3. 주요 내용 요약&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;템플릿 (template)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 다형성의 종류&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;└ 템플릿(인자 다형성) : C++에서 다형성을 실현하는 또 다른 방법&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ 코어션 : 수식, 변수 등의 불일치가 발생했을 때 형변환을 시켜주는 기능&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;템플릿 구현 형식(generic function)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 템플릿 : 포괄적 함수&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ 템플릿은 인자(매개변수)를 통한 다형성을 제공한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ 함수 중첩은 기능이 같은 함수들을 같은 이름으로 사용할 수 있도록 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ 함수의 매개변수의 형과 수로 구분이 되고, 코드 자체도 다르게 구성될 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;코드는 전혀 바뀌지 않고 형만 다른 함수&lt;/span&gt;&lt;/b&gt;를 필요로 한다면 템플릿을 사용하는 것이 좋다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ 이는 값 뿐만이 아니라 형을 인자로 받는 함수로서 인자로 받은 형에 대하여 함수를 생성시키는 &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;포괄적 함수(generic function)&lt;/span&gt;&lt;/b&gt;이다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;참조자(reference)&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;- C++에서만 사용 가능&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;- 참조자를 사용하려면 파일명이 .cpp 이여야함&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;- 변수의 별명&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└&amp;nbsp;&lt;/span&gt; (int &amp;amp;rx=x;)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└&amp;nbsp;&lt;/span&gt; rx는 x를 참조하도록 초기화된 정수형 참조자&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└&amp;nbsp;&lt;/span&gt; 참조자(rx)에 변화를 주면 그 타겟(x)도 변함&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;변수를 선언할 때 아무것도 없으면 ①일반변수, ②*가 있으면 포인터변수, ③&amp;amp;가 있으면 레퍼런스 변수다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;C/C++에서 가장 눈에 거슬리는 *과 &amp;amp;&lt;/b&gt;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 80.9299%; height: 284px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 22px;&quot;&gt;
&lt;td style=&quot;width: 14.4121%; height: 22px; text-align: center;&quot;&gt;문\기호&lt;/td&gt;
&lt;td style=&quot;width: 29.6876%; text-align: center; height: 22px;&quot; colspan=&quot;2&quot;&gt;*&lt;/td&gt;
&lt;td style=&quot;width: 36.9247%; text-align: center; height: 22px;&quot; colspan=&quot;2&quot;&gt;&amp;amp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 60px;&quot;&gt;
&lt;td style=&quot;width: 14.4121%; height: 132px;&quot; rowspan=&quot;2&quot;&gt;선언문(구두점)&lt;/td&gt;
&lt;td style=&quot;width: 9.75563%; text-align: center; height: 60px;&quot;&gt;예시&lt;/td&gt;
&lt;td style=&quot;width: 19.932%; height: 60px;&quot;&gt;int *px = &amp;amp;x;&lt;/td&gt;
&lt;td style=&quot;width: 9.68762%; text-align: center; height: 60px;&quot;&gt;예시&lt;/td&gt;
&lt;td style=&quot;width: 27.2371%; height: 60px;&quot;&gt;int &amp;amp;rx=x;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 72px;&quot;&gt;
&lt;td style=&quot;width: 9.75563%; text-align: center; height: 72px;&quot;&gt;의미&lt;/td&gt;
&lt;td style=&quot;width: 19.932%; height: 72px;&quot;&gt;px는 변수를 x의 주소를 저장하는 포인터 변수&lt;/td&gt;
&lt;td style=&quot;width: 9.68762%; text-align: center; height: 72px;&quot;&gt;의미&lt;/td&gt;
&lt;td style=&quot;width: 27.2371%; height: 72px;&quot;&gt;rx는 x의 참조자(별명)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 55px;&quot;&gt;
&lt;td style=&quot;width: 14.4121%; height: 130px;&quot; rowspan=&quot;2&quot;&gt;실행문(연산자)&lt;/td&gt;
&lt;td style=&quot;width: 9.75563%; text-align: center; height: 55px;&quot;&gt;예시&lt;/td&gt;
&lt;td style=&quot;width: 19.932%; height: 55px;&quot;&gt;*px = 10;&lt;br /&gt;y= *px;&lt;/td&gt;
&lt;td style=&quot;width: 9.68762%; text-align: center; height: 55px;&quot;&gt;예시&lt;/td&gt;
&lt;td style=&quot;width: 27.2371%; height: 55px;&quot;&gt;px=&amp;amp;x;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 75px;&quot;&gt;
&lt;td style=&quot;width: 9.75563%; text-align: center; height: 75px;&quot;&gt;의미&lt;/td&gt;
&lt;td style=&quot;width: 19.932%; height: 75px;&quot;&gt;px가 가르키는 주소의 내용&lt;/td&gt;
&lt;td style=&quot;width: 9.68762%; text-align: center; height: 75px;&quot;&gt;의미&lt;/td&gt;
&lt;td style=&quot;width: 27.2371%; height: 75px;&quot;&gt;x변수의 주소&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일 입출력 개념 및 기본 형식&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 파일 입출력 동적을 수행하기 위해 ifstream, ofstream, fstream 클래스가 있으며 이들 클래스는 fstream 헤더파일에 정의되어 있다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- ifstream : 파일로부터 입력(파일 읽기) 동작을 수행하기 위한 스트림 클래스&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- ofstream : 파일로 출력(파일 쓰기)하기위한 스트림 선언하는 클래스&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- fstream : &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;입출력&lt;/b&gt;&lt;/span&gt; 동작 모두를 위한 스트림 선언할 때 사용됨&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 파일스트림의 객체는 사용자가 직접 프로그램 상에서 선언해야하고, 파일을 개방(open)하고 종결(close)하는 동작이 필요함&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일의 개방 및 종결 형식&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파일 개방하는 2가지 방식( 1줄, 2줄 )&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #006dd7;&quot;&gt;파일클래스&lt;/span&gt; &lt;span style=&quot;color: #009a87;&quot;&gt;스트림객체명(파일명,&lt;/span&gt; &lt;span style=&quot;color: #ee2323;&quot;&gt;개방모드&lt;/span&gt;);&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;└ &lt;span style=&quot;color: #006dd7;&quot;&gt;파일클래스&lt;/span&gt; : ifstream, ofstream, fstream&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ &lt;span style=&quot;color: #ee2323;&quot;&gt;개방모드&lt;/span&gt; : ios::in(입력), ios::out(출력)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;-&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;파일클래스&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;스트림객체명;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;스트림객체명.open(파일명, &lt;span style=&quot;color: #ee2323;&quot;&gt;개방모드&lt;/span&gt;&lt;span style=&quot;text-align: start;&quot;&gt;); &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파일 종결하는 방식&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- &lt;span style=&quot;color: #009a87; text-align: start;&quot;&gt;스트림객체명.close();&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;4. 감상 평&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;변수를 선언할 때 일반변수, 포인터변수, 레퍼런스변수를 정확하게 알게 되었다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;5. 강의 이해도&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;70%&lt;/p&gt;</description>
      <category>C++</category>
      <author>wlsn</author>
      <guid isPermaLink="true">https://wlsn3999.tistory.com/75</guid>
      <comments>https://wlsn3999.tistory.com/75#entry75comment</comments>
      <pubDate>Tue, 3 Dec 2024 01:46:26 +0900</pubDate>
    </item>
    <item>
      <title>13주차 강의 내용</title>
      <link>https://wlsn3999.tistory.com/74</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;482&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biWikw/btsKWjfO53M/WCBcxuYJatLdTK1RJheQMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biWikw/btsKWjfO53M/WCBcxuYJatLdTK1RJheQMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biWikw/btsKWjfO53M/WCBcxuYJatLdTK1RJheQMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiWikw%2FbtsKWjfO53M%2FWCBcxuYJatLdTK1RJheQMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;698&quot; height=&quot;482&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;482&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부모는 protected, 자식은 public으로 하는 것이 보편적이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1682&quot; data-origin-height=&quot;615&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3nTr5/btsKW34GntY/zRzkHeLOIjfyfaEWe3d5ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3nTr5/btsKW34GntY/zRzkHeLOIjfyfaEWe3d5ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3nTr5/btsKW34GntY/zRzkHeLOIjfyfaEWe3d5ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3nTr5%2FbtsKW34GntY%2FzRzkHeLOIjfyfaEWe3d5ok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1682&quot; height=&quot;615&quot; data-origin-width=&quot;1682&quot; data-origin-height=&quot;615&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C++에서 가상함수의 구현을 overriding이라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1681&quot; data-origin-height=&quot;950&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RCoOE/btsKVAilj6c/TdZpFXqcMzqhSZWZE0stF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RCoOE/btsKVAilj6c/TdZpFXqcMzqhSZWZE0stF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RCoOE/btsKVAilj6c/TdZpFXqcMzqhSZWZE0stF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRCoOE%2FbtsKVAilj6c%2FTdZpFXqcMzqhSZWZE0stF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1681&quot; height=&quot;950&quot; data-origin-width=&quot;1681&quot; data-origin-height=&quot;950&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;overriding에서 virtual을 써야지 public에 있는게 써진다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2341&quot; data-origin-height=&quot;761&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QIC9n/btsKUHhJ3TX/zPuuaoOeVZ4U4pTCYlwLhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QIC9n/btsKUHhJ3TX/zPuuaoOeVZ4U4pTCYlwLhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QIC9n/btsKUHhJ3TX/zPuuaoOeVZ4U4pTCYlwLhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQIC9n%2FbtsKUHhJ3TX%2FzPuuaoOeVZ4U4pTCYlwLhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2341&quot; height=&quot;761&quot; data-origin-width=&quot;2341&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변수,함수에 대한 메모리 할당, 함수호출이 발생 했을때 명령어들이 결정되는 시점을 바인딩이라고 부른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1337&quot; data-origin-height=&quot;966&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xg7Xg/btsKVr65rgR/blzJCeCfEw035n5jXRVKR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xg7Xg/btsKVr65rgR/blzJCeCfEw035n5jXRVKR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xg7Xg/btsKVr65rgR/blzJCeCfEw035n5jXRVKR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxg7Xg%2FbtsKVr65rgR%2FblzJCeCfEw035n5jXRVKR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1337&quot; height=&quot;966&quot; data-origin-width=&quot;1337&quot; data-origin-height=&quot;966&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;static을 안줘서 1010 1010 1010이 찍힌 모습.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1485&quot; data-origin-height=&quot;1063&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cyUxQA/btsKXhu0n4s/wukUAuG5Qid8U8QiaLR8N1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cyUxQA/btsKXhu0n4s/wukUAuG5Qid8U8QiaLR8N1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cyUxQA/btsKXhu0n4s/wukUAuG5Qid8U8QiaLR8N1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcyUxQA%2FbtsKXhu0n4s%2FwukUAuG5Qid8U8QiaLR8N1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1485&quot; height=&quot;1063&quot; data-origin-width=&quot;1485&quot; data-origin-height=&quot;1063&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;static을 주자 없던 y값이 생긴 모습&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;static은 마치 시작프로그램과 비슷하다고 생각하면 된다. 컴파일을 시작할 때 미리 자리를 잡고있기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행할때는 16줄을 건너뛰고 실행이 된다. 왜냐하면 이미 컴파일을 시작했을 때 정해졌기 때문이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1453&quot; data-origin-height=&quot;1053&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Vwdz7/btsKU7UUgKj/dVNbX9pDiMFrlFlLdT7eMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Vwdz7/btsKU7UUgKj/dVNbX9pDiMFrlFlLdT7eMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Vwdz7/btsKU7UUgKj/dVNbX9pDiMFrlFlLdT7eMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVwdz7%2FbtsKU7UUgKj%2FdVNbX9pDiMFrlFlLdT7eMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1453&quot; height=&quot;1053&quot; data-origin-width=&quot;1453&quot; data-origin-height=&quot;1053&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1010을 찍고 난 후 지역변수를 벗어나 x는 쓰레기값으로 바뀌지만 static으로 고정된 y는 11로 y++이 된 모습이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1457&quot; data-origin-height=&quot;1051&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bequWX/btsKWSCeibB/PkvQRJFbr5691VZuHZ9fJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bequWX/btsKWSCeibB/PkvQRJFbr5691VZuHZ9fJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bequWX/btsKWSCeibB/PkvQRJFbr5691VZuHZ9fJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbequWX%2FbtsKWSCeibB%2FPkvQRJFbr5691VZuHZ9fJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1457&quot; height=&quot;1051&quot; data-origin-width=&quot;1457&quot; data-origin-height=&quot;1051&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과적으로 sub()를 3개를 써서 1010 1011 1012가 찍히게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2195&quot; data-origin-height=&quot;1157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PMt6M/btsKWVMrMlU/7ZmYcHZbkOnQGAJVbLqwK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PMt6M/btsKWVMrMlU/7ZmYcHZbkOnQGAJVbLqwK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PMt6M/btsKWVMrMlU/7ZmYcHZbkOnQGAJVbLqwK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPMt6M%2FbtsKWVMrMlU%2F7ZmYcHZbkOnQGAJVbLqwK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2195&quot; height=&quot;1157&quot; data-origin-width=&quot;2195&quot; data-origin-height=&quot;1157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1235&quot; data-origin-height=&quot;775&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kGAGd/btsKXj0DXDw/XjABB2P0QbvwFtZ2mI3HhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kGAGd/btsKXj0DXDw/XjABB2P0QbvwFtZ2mI3HhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kGAGd/btsKXj0DXDw/XjABB2P0QbvwFtZ2mI3HhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkGAGd%2FbtsKXj0DXDw%2FXjABB2P0QbvwFtZ2mI3HhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1235&quot; height=&quot;775&quot; data-origin-width=&quot;1235&quot; data-origin-height=&quot;775&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멤버변수 앞에 static을 쓴다면 정적멤버변수로 바뀐다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;*객체들이 정보를 공유할 목적으로 사용하는 변수*&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2014&quot; data-origin-height=&quot;1091&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUKh21/btsKU5JvvPd/paNIVKpa03op1oqXfPHLVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUKh21/btsKU5JvvPd/paNIVKpa03op1oqXfPHLVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUKh21/btsKU5JvvPd/paNIVKpa03op1oqXfPHLVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUKh21%2FbtsKU5JvvPd%2FpaNIVKpa03op1oqXfPHLVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2014&quot; height=&quot;1091&quot; data-origin-width=&quot;2014&quot; data-origin-height=&quot;1091&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멤버변수는 각 개체마다 따로 생성되고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;멤버함수는 모든 객체가 공유함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사람으로 치면 나이,얼굴, 다리, 팔 같은 명사적인 사항이 멤버변수고 숨쉬기, 뛰기 등 동사적이고 공통적인 사항이 멤버함수라고 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1963&quot; data-origin-height=&quot;1134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pP8Md/btsKUBaPoWZ/uQMJGRM65dfdj63Qgp42T0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pP8Md/btsKUBaPoWZ/uQMJGRM65dfdj63Qgp42T0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pP8Md/btsKUBaPoWZ/uQMJGRM65dfdj63Qgp42T0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpP8Md%2FbtsKUBaPoWZ%2FuQMJGRM65dfdj63Qgp42T0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1963&quot; height=&quot;1134&quot; data-origin-width=&quot;1963&quot; data-origin-height=&quot;1134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;객체들을 공유하고 싶을 때 static을 붙여 공유하게 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1732590268725&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
class Point {
	int x;
	int y;
	static int count; //선언
public:
	Point() { cout &amp;lt;&amp;lt; ++count; }
	~Point() { cout &amp;lt;&amp;lt; --count; }
};
int Point::count = 0; //정의
int main()
{
	Point p1, p2, p3;
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 소스를 Python Tutor에 넣었을 때&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1482&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZmgKx/btsKWTumtCv/lKk6K6un7mUT6RExkAxgq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZmgKx/btsKWTumtCv/lKk6K6un7mUT6RExkAxgq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZmgKx/btsKWTumtCv/lKk6K6un7mUT6RExkAxgq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZmgKx%2FbtsKWTumtCv%2FlKk6K6un7mUT6RExkAxgq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1482&quot; height=&quot;948&quot; data-origin-width=&quot;1482&quot; data-origin-height=&quot;948&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1478&quot; data-origin-height=&quot;960&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dbJLDZ/btsKXza6ImZ/IbqywbhkJS3KLbVj8jui70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dbJLDZ/btsKXza6ImZ/IbqywbhkJS3KLbVj8jui70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dbJLDZ/btsKXza6ImZ/IbqywbhkJS3KLbVj8jui70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdbJLDZ%2FbtsKXza6ImZ%2FIbqywbhkJS3KLbVj8jui70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1478&quot; height=&quot;960&quot; data-origin-width=&quot;1478&quot; data-origin-height=&quot;960&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;123210이 찍히게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;1233&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1hN0N/btsKWiVxYJt/hDzidUnvMa5mUhkQZE3hH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1hN0N/btsKWiVxYJt/hDzidUnvMa5mUhkQZE3hH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1hN0N/btsKWiVxYJt/hDzidUnvMa5mUhkQZE3hH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1hN0N%2FbtsKWiVxYJt%2FhDzidUnvMa5mUhkQZE3hH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1128&quot; height=&quot;1233&quot; data-origin-width=&quot;1128&quot; data-origin-height=&quot;1233&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;int Point::count = 0;을 주석처리한다면 오류가 뜨게된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6번째 줄에 static이 이미 선언되어 있기 때문에 class밖에 정의를 해줘야 오류가 생기지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1695&quot; data-origin-height=&quot;956&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bskvIt/btsKVbpL43S/qOgO0eBEcc2Zou9ea16NJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bskvIt/btsKVbpL43S/qOgO0eBEcc2Zou9ea16NJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bskvIt/btsKVbpL43S/qOgO0eBEcc2Zou9ea16NJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbskvIt%2FbtsKVbpL43S%2FqOgO0eBEcc2Zou9ea16NJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1695&quot; height=&quot;956&quot; data-origin-width=&quot;1695&quot; data-origin-height=&quot;956&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;virtual부분은 overriding, public에 기능이 달라지는 것은 overloading이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;807&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cQEf5y/btsKVZvbwfS/8YhG19Mtqq2zbrSXbUo9vk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cQEf5y/btsKVZvbwfS/8YhG19Mtqq2zbrSXbUo9vk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cQEf5y/btsKVZvbwfS/8YhG19Mtqq2zbrSXbUo9vk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcQEf5y%2FbtsKVZvbwfS%2F8YhG19Mtqq2zbrSXbUo9vk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1604&quot; height=&quot;807&quot; data-origin-width=&quot;1604&quot; data-origin-height=&quot;807&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;1256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfDVtM/btsKWmcE05u/ShyPtaxLLmqMRJCFUUkKwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfDVtM/btsKWmcE05u/ShyPtaxLLmqMRJCFUUkKwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfDVtM/btsKWmcE05u/ShyPtaxLLmqMRJCFUUkKwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfDVtM%2FbtsKWmcE05u%2FShyPtaxLLmqMRJCFUUkKwK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1316&quot; height=&quot;1256&quot; data-origin-width=&quot;1316&quot; data-origin-height=&quot;1256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순수가상함수를 갖는 클래스를 추상클래스라고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추상클래스는 객체를 만들 수 없어 주석처리로 바꾸고 다시 실행을 한다면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m3X8j/btsKVACHrpx/qajfrlqR0mRAUPkFi2x6kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m3X8j/btsKVACHrpx/qajfrlqR0mRAUPkFi2x6kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m3X8j/btsKVACHrpx/qajfrlqR0mRAUPkFi2x6kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm3X8j%2FbtsKVACHrpx%2FqajfrlqR0mRAUPkFi2x6kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;367&quot; height=&quot;123&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이와 같은 결과가 나온다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순수가상함수는 'virtual', 뒤에 =0 을 붙이면 만들 수 있고 추상클래스를 정의하는데 사용함하지만 인스턴스는 생성불가능(불안정하기 때문에)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1703&quot; data-origin-height=&quot;921&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eaghIc/btsKVqtBCPP/DQbgLiMGWrLA29ZfnKvpKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eaghIc/btsKVqtBCPP/DQbgLiMGWrLA29ZfnKvpKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eaghIc/btsKVqtBCPP/DQbgLiMGWrLA29ZfnKvpKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeaghIc%2FbtsKVqtBCPP%2FDQbgLiMGWrLA29ZfnKvpKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1703&quot; height=&quot;921&quot; data-origin-width=&quot;1703&quot; data-origin-height=&quot;921&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;virtual을 추가하고 override는 생략이 가능하지만 써주는것이 좋다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽의 결과는 Dot클래스 Dot이지만 오른쪽은 Dot클래스 line으로 바뀐다.&lt;/p&gt;</description>
      <category>C++</category>
      <author>wlsn</author>
      <guid isPermaLink="true">https://wlsn3999.tistory.com/74</guid>
      <comments>https://wlsn3999.tistory.com/74#entry74comment</comments>
      <pubDate>Tue, 26 Nov 2024 11:51:28 +0900</pubDate>
    </item>
    <item>
      <title>13주차 예습과제</title>
      <link>https://wlsn3999.tistory.com/73</link>
      <description>&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;강의 주제 : 바인딩과 오버로딩vs오버라이딩&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;강의 키워드(주요 단어) : 바인딩, 오버로딩, 오버라이딩, 정적(static)멤버변수, 가상함수, 순수가상함수&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;주요 내용 요약&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;가상함수(overriding)의 필요성, (최우선의 라는 뜻도 가지고 있다.)&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;클래스를 상속 받아서 쓰는데, 상속 받은 클래스의 함수 중 고치고 싶은 함수가 있을 때&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존 클래스의 모든 내용을 모두 현재 프로그램에 사용할 수 있는데, 특정 함수가 마음에 들지 않음&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기존의 클래스를 고치느니 상속을 받고, 가상함수를 이용하여 기존의 함수를 고쳐서 사용&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;상속 받은 함수(부모)를 실행하지 않고 자신(자식)의 함수를 실행&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;가상함수의 구현을 중복(overriding)이라고 함&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;바인딩(binding)&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 변수와 함수에 대한 메모리 할당이나 함수 호출이 발생했을 때 실제로 처리해야하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;명령어들이 결정되는 시점&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 정적(static) 바인딩, early&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;└ 컴파일 시 변수의 위치와 함수가 실행할 명령이 결정되는 경우&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ static 변수, overloading&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;- 동적(dynamic) 바인딩, late&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ 실제 실행할 때(run time) 결정되는 경우&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ 지역변수, overriding&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;C++과 C에서 auto는 원래 같은 문법이였지만 C++11에서&amp;nbsp; auto는 기억클래스&amp;nbsp;지정자가 아닌 동적으로 타입을 정하게 바뀌었다.(stl 사용시 코드가 짧고 가독성이 좋아짐)&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;정적(static) 멤버변수&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 모든 객체가 공유하는 멤버변수&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 한 클래스로부터 객체가 여러개 만들어지더라도 멤버변수당 하나씩 생성됨&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 여러 객체들에서 공유해야하는 정보는 멤버변수로 선언함&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;cast연산자&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- static_cast&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- dynamic_cast : 안전한 downcasting (왠만해서는 잘 쓰이지 않음)&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&amp;nbsp; └ 부모 클래스의 포인터에서 자식 클래스의 포인터로 다운 캐스팅&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;- const_cast&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;- reinterpret_cast&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- C/C++ cast 연산자&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ (type)(expression)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ (double)x;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- C++ cast 연산자&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ 연산자&amp;lt;type&amp;gt;(expression)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;└ static_cast&amp;lt;double&amp;gt;(x);&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;기본 클래스(base)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;uarr; : upcasting(문제x)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt; &lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&amp;darr; : down casting&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파생 클래스(Derived)&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;가상함수(virtual function)&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 오버라이딩을 구현하는 방법&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 동적(실행시) 바인딩, late binding&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 가상함수를 정의하기 위해서는 기본 클래스의 멤버함수 앞에 'virtual'이라는 키워드를 씀&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 가상함수는 하나의 이름(인터페이스)으로 여러 개의 수단과 방법을 제공하는 객체지향 프로그래밍의 다형성을 구현하는 한 방법&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 기본 클래스에서 상속 받았는데 파생 클래스에서 멤버함수를 재정의하는 이유는 어떠한 경우라도 기본클래스의 멤버함수를 버리고 파생 클래스의 멤버함수를 사용하려는 것&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;- 기존 클래스의 모든 내용을 모두 현재 프로그램에 사용할 수 있는데 특정 함수가 걸맞지 않을 경우, 기존의 클래스를 고치느니 상속을 받고 가상함수를 이용하여 마음에 들지 않는 함수만 고쳐서 사용함&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;순수가상함수(pure virtual function)&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;- 파생클래스에서 반드시 재정의를 해야함&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;- 순수가상함수를 갖는 클래스는 &quot;추상클래스&quot;라고 부름&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;- 추상클래스는 객체생성이 안된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;감상 평&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;새로운 가상함수, overloading vs overriding의 개념을 배울 수 있어 재밌었다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;강의 이해도&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;75%&lt;/p&gt;</description>
      <category>C++</category>
      <author>wlsn</author>
      <guid isPermaLink="true">https://wlsn3999.tistory.com/73</guid>
      <comments>https://wlsn3999.tistory.com/73#entry73comment</comments>
      <pubDate>Tue, 26 Nov 2024 01:33:29 +0900</pubDate>
    </item>
    <item>
      <title>12주차 강의내용</title>
      <link>https://wlsn3999.tistory.com/72</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;996&quot; data-origin-height=&quot;1045&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ae1hf/btsKN2Zqkoh/4V9BQH2e4mb0H8zvgWBpeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ae1hf/btsKN2Zqkoh/4V9BQH2e4mb0H8zvgWBpeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ae1hf/btsKN2Zqkoh/4V9BQH2e4mb0H8zvgWBpeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAe1hf%2FbtsKN2Zqkoh%2F4V9BQH2e4mb0H8zvgWBpeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;996&quot; height=&quot;1045&quot; data-origin-width=&quot;996&quot; data-origin-height=&quot;1045&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;aa.을 하면 class A에 있는 public부분에 b1~b4까지 나타낼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;320&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tUM2x/btsKN0m5FRD/k7OkLk3ybalRn3wcApmuHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tUM2x/btsKN0m5FRD/k7OkLk3ybalRn3wcApmuHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tUM2x/btsKN0m5FRD/k7OkLk3ybalRn3wcApmuHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtUM2x%2FbtsKN0m5FRD%2Fk7OkLk3ybalRn3wcApmuHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;850&quot; height=&quot;320&quot; data-origin-width=&quot;850&quot; data-origin-height=&quot;320&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;B는 아무것도 없기때문에 나타나지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1m4Re/btsKNdgbw8u/0STGKaDgI6r9jGZtCqn4u0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1m4Re/btsKNdgbw8u/0STGKaDgI6r9jGZtCqn4u0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1m4Re/btsKNdgbw8u/0STGKaDgI6r9jGZtCqn4u0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1m4Re%2FbtsKNdgbw8u%2F0STGKaDgI6r9jGZtCqn4u0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;655&quot; height=&quot;632&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 상속을 한다면 부모의 public을 물려받을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C++, JAVA, python의 상속 예제다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;C++&lt;/p&gt;
&lt;pre id=&quot;code_1731983131781&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;

class Animal { // 기본 클래스
public:
    void speak() { cout &amp;lt;&amp;lt; &quot;Animal speaks\n&quot;; } // 기본 클래스의 메서드
};

class Dog : public Animal { // 파생 클래스
public:
    void speak() { cout &amp;lt;&amp;lt; &quot;Dog barks\n&quot;; } // 오버라이드된 메서드
};

int main() {
    Animal a;
    a.speak(); // 출력: Animal speaks

    Dog d;
    d.speak(); // 출력: Dog barks

    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JAVA&lt;/p&gt;
&lt;pre id=&quot;code_1731983148300&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Animal { // 기본 클래스
    void speak() {
        System.out.println(&quot;Animal speaks&quot;); // 기본 클래스의 메서드
    }
}

class Dog extends Animal { // 파생 클래스
    void speak() {
        System.out.println(&quot;Dog barks&quot;); // 오버라이드된 메서드
    }
}

public class Main {
    public static void main(String[] args) {
        Animal a = new Animal();
        a.speak(); // 출력: Animal speaks

        Dog d = new Dog();
        d.speak(); // 출력: Dog barks
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;python&lt;/p&gt;
&lt;pre id=&quot;code_1731983163299&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Animal:  # 기본 클래스
    def speak(self):
        print(&quot;Animal speaks&quot;)  # 기본 클래스의 메서드

class Dog(Animal):  # 파생 클래스
    def speak(self):
        print(&quot;Dog barks&quot;)  # 오버라이드된 메서드

if __name__ == &quot;__main__&quot;:
    a = Animal()
    a.speak()  # 출력: Animal speaks

    d = Dog()
    d.speak()  # 출력: Dog barks&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1943&quot; data-origin-height=&quot;1162&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BVoqC/btsKMlFXuxG/OF74XUVK9pjV3LXDAwinbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BVoqC/btsKMlFXuxG/OF74XUVK9pjV3LXDAwinbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BVoqC/btsKMlFXuxG/OF74XUVK9pjV3LXDAwinbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBVoqC%2FbtsKMlFXuxG%2FOF74XUVK9pjV3LXDAwinbk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1943&quot; height=&quot;1162&quot; data-origin-width=&quot;1943&quot; data-origin-height=&quot;1162&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;956&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLNJFD/btsKNcO5Uut/Y6GHJDeSAYcG8kKPiuKZK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLNJFD/btsKNcO5Uut/Y6GHJDeSAYcG8kKPiuKZK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLNJFD/btsKNcO5Uut/Y6GHJDeSAYcG8kKPiuKZK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLNJFD%2FbtsKNcO5Uut%2FY6GHJDeSAYcG8kKPiuKZK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1638&quot; height=&quot;956&quot; data-origin-width=&quot;1638&quot; data-origin-height=&quot;956&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상속관계는 다른말로 is a 관계라고도 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1959&quot; data-origin-height=&quot;986&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/37DZM/btsKOJydEBj/mk0UkvdhAnjaFM4jEsMik1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/37DZM/btsKOJydEBj/mk0UkvdhAnjaFM4jEsMik1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/37DZM/btsKOJydEBj/mk0UkvdhAnjaFM4jEsMik1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F37DZM%2FbtsKOJydEBj%2Fmk0UkvdhAnjaFM4jEsMik1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1959&quot; height=&quot;986&quot; data-origin-width=&quot;1959&quot; data-origin-height=&quot;986&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1419&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CG10D/btsKN4JKvJZ/8kCkxXrJPPKkxcSSuB8hbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CG10D/btsKN4JKvJZ/8kCkxXrJPPKkxcSSuB8hbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CG10D/btsKN4JKvJZ/8kCkxXrJPPKkxcSSuB8hbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCG10D%2FbtsKN4JKvJZ%2F8kCkxXrJPPKkxcSSuB8hbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1419&quot; height=&quot;231&quot; data-origin-width=&quot;1419&quot; data-origin-height=&quot;231&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부모클래스에서 public으로 상속받은 자식클래스라고 읽을 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2164&quot; data-origin-height=&quot;1156&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCnLOT/btsKNsEz3PH/qWKfQ4GUhlARYGMUyLZLi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCnLOT/btsKNsEz3PH/qWKfQ4GUhlARYGMUyLZLi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCnLOT/btsKNsEz3PH/qWKfQ4GUhlARYGMUyLZLi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCnLOT%2FbtsKNsEz3PH%2FqWKfQ4GUhlARYGMUyLZLi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2164&quot; height=&quot;1156&quot; data-origin-width=&quot;2164&quot; data-origin-height=&quot;1156&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상속의&amp;nbsp;접근&amp;nbsp;제어는&amp;nbsp;파생&amp;nbsp;클래스에서&amp;nbsp;기본&amp;nbsp;클래스의&amp;nbsp;멤버에&amp;nbsp;대한&amp;nbsp;접근&amp;nbsp;권한을&amp;nbsp;정의합니다.&lt;br /&gt;public&amp;nbsp;상속을&amp;nbsp;통해&amp;nbsp;protected와&amp;nbsp;public&amp;nbsp;멤버는&amp;nbsp;파생&amp;nbsp;클래스에서&amp;nbsp;그대로&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대체로&amp;nbsp;public&amp;nbsp;상속은&amp;nbsp;C++에서&amp;nbsp;가장&amp;nbsp;많이&amp;nbsp;사용되는&amp;nbsp;상속&amp;nbsp;형태이며,&amp;nbsp;많은&amp;nbsp;개발자들이&amp;nbsp;기본&amp;nbsp;클래스의&amp;nbsp;기능을&amp;nbsp;확장하고&amp;nbsp;재사용하기&amp;nbsp;위해&amp;nbsp;이를&amp;nbsp;선택합니다.&amp;nbsp;그러나&amp;nbsp;특정&amp;nbsp;상황에서는&amp;nbsp;protected나&amp;nbsp;private&amp;nbsp;상속이&amp;nbsp;더&amp;nbsp;적합할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;따라서,&amp;nbsp;실제&amp;nbsp;비율은&amp;nbsp;프로젝트나&amp;nbsp;개별&amp;nbsp;개발자의&amp;nbsp;스타일에&amp;nbsp;따라&amp;nbsp;다를&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;1165&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WOlkQ/btsKNUN8VyI/xOBJKXvRIgxQO4PxNY7quk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WOlkQ/btsKNUN8VyI/xOBJKXvRIgxQO4PxNY7quk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WOlkQ/btsKNUN8VyI/xOBJKXvRIgxQO4PxNY7quk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWOlkQ%2FbtsKNUN8VyI%2FxOBJKXvRIgxQO4PxNY7quk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1940&quot; height=&quot;1165&quot; data-origin-width=&quot;1940&quot; data-origin-height=&quot;1165&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상속이되면 public으로 한다고해도 private은 절때로 넘어가지않고 protected와 public은 넘길 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731985420389&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
class A // 기본 클래스
{
	int x;
public:
	void setX(int i) { x = i; }
	void showX() { cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; endl; }
};
class B :public A //파생 클래스
{
	int y;
public:
	void setY(int i) { y = i; }
	void showY() { cout &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl; }
};
int main()
{
	B bb; // 파생클래스의 객체
	bb.setX(1); // 오류 ① bb.setX(1);
	bb.setY(1); // 오류 ② bb.setY(2);
	bb.showX(); // 기본클래스의 멤버접근
	bb.showY(); // 파생클래스의 멤버접근
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;private은 상속도 안되며 각 class에서만 사용할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2175&quot; data-origin-height=&quot;960&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bS3l4f/btsKN4CXUve/LoKCUK4VNzk9UWwO7P8hOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bS3l4f/btsKN4CXUve/LoKCUK4VNzk9UWwO7P8hOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bS3l4f/btsKN4CXUve/LoKCUK4VNzk9UWwO7P8hOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbS3l4f%2FbtsKN4CXUve%2FLoKCUK4VNzk9UWwO7P8hOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2175&quot; height=&quot;960&quot; data-origin-width=&quot;2175&quot; data-origin-height=&quot;960&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;부모의 public을 통해서 접근을 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1915&quot; data-origin-height=&quot;941&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kxxlZ/btsKOS9FLGh/RpIBdRTJjDrNvRZNkeef70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kxxlZ/btsKOS9FLGh/RpIBdRTJjDrNvRZNkeef70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kxxlZ/btsKOS9FLGh/RpIBdRTJjDrNvRZNkeef70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkxxlZ%2FbtsKOS9FLGh%2FRpIBdRTJjDrNvRZNkeef70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1915&quot; height=&quot;941&quot; data-origin-width=&quot;1915&quot; data-origin-height=&quot;941&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;private 상속은 protected나 public이 protected나 public으로 갔던 것을 모두 private으로 가게하는 상속이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731986077959&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
class A
{
	int x; //int x=10; //가능?
public:
	void setX(int i) { x = i; }
	void showX() { cout &amp;lt;&amp;lt; x &amp;lt;&amp;lt; endl; }
};
class B :private A //비공개적으로 상속
{
	int y;
public:
	void setY(int i) { y = i; }
	void showY() { cout &amp;lt;&amp;lt; y &amp;lt;&amp;lt; endl; }
};
int main()
{
	A aa;
	B bb;
	aa.setX(1);
	aa.showX();
//	bb.setX(1); // 오류
	bb.setY(2); // 파생클래스의 멤버접근
//	bb.showX(); // 오류
	bb.showY(); // 파생클래스의 멤버접근
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;setX에 경우 private으로 가기 때문에 bb.setX(1);을 불러온다면 private으로 외부에서 접근하는 것이기 때문에 오류가 뜰 수 밖에 없다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1653&quot; data-origin-height=&quot;861&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbP7fP/btsKMlswg9D/KNleXqHVPy9KE2NhaLsh01/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbP7fP/btsKMlswg9D/KNleXqHVPy9KE2NhaLsh01/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbP7fP/btsKMlswg9D/KNleXqHVPy9KE2NhaLsh01/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbP7fP%2FbtsKMlswg9D%2FKNleXqHVPy9KE2NhaLsh01%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1653&quot; height=&quot;861&quot; data-origin-width=&quot;1653&quot; data-origin-height=&quot;861&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽 소스에서 빨간부분 = 1을 뺀다면 쓰레기 값이 출력된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731986517145&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
class A
{
	int x = 1;
public:
	A() { x = 2; }
	A() : x(2) {}
	void setX(int i) { x = i; }
	int getX() { return x; }
};
int main()
{
	A a1; //디폴트 생성자는 사라짐
	cout &amp;lt;&amp;lt; a1.getX() &amp;lt;&amp;lt; endl;
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;public부분에 A()는 두 생성자는 같다고 볼 수 있다. 시험에 꼭 출제된다고 함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l8PGS/btsKOUTYHI8/kn905zPikSpx0WDEvtOJYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l8PGS/btsKOUTYHI8/kn905zPikSpx0WDEvtOJYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l8PGS/btsKOUTYHI8/kn905zPikSpx0WDEvtOJYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl8PGS%2FbtsKOUTYHI8%2Fkn905zPikSpx0WDEvtOJYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1970&quot; height=&quot;1135&quot; data-origin-width=&quot;1970&quot; data-origin-height=&quot;1135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;protected는 잘 사용하지 않지만 protected와 public이 둘다 protected로 간다. 하지만 거의 쓰지 않는 상속법.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2195&quot; data-origin-height=&quot;1088&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q70I8/btsKNfyo8hm/Kg6Uqjo64fw64Z5iSKvaM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q70I8/btsKNfyo8hm/Kg6Uqjo64fw64Z5iSKvaM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q70I8/btsKNfyo8hm/Kg6Uqjo64fw64Z5iSKvaM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq70I8%2FbtsKNfyo8hm%2FKg6Uqjo64fw64Z5iSKvaM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2195&quot; height=&quot;1088&quot; data-origin-width=&quot;2195&quot; data-origin-height=&quot;1088&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;private과 protected의 공통점은 외부에서 접근이 불가능하다. 고로 public으로 접근해야 함.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1759&quot; data-origin-height=&quot;883&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dUmf1K/btsKNsR7Tu3/q6y7NjPLsKhkpMYuqrJoKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dUmf1K/btsKNsR7Tu3/q6y7NjPLsKhkpMYuqrJoKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dUmf1K/btsKNsR7Tu3/q6y7NjPLsKhkpMYuqrJoKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdUmf1K%2FbtsKNsR7Tu3%2Fq6y7NjPLsKhkpMYuqrJoKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1759&quot; height=&quot;883&quot; data-origin-width=&quot;1759&quot; data-origin-height=&quot;883&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;a,b는 &quot;자식&quot;이외 외부에서 접근 불가, a,b가 자식에게 상속안됨, a,b는 A클래스 내에서 접근 가능&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;protected 접근제어의 장점&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 상속 관계에서의 접근 허용&lt;br /&gt;protected&amp;nbsp;멤버는&amp;nbsp;기본&amp;nbsp;클래스의&amp;nbsp;파생&amp;nbsp;클래스에서&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;이를&amp;nbsp;통해&amp;nbsp;기본&amp;nbsp;클래스의&amp;nbsp;기능을&amp;nbsp;확장하면서도&amp;nbsp;멤버&amp;nbsp;변수를&amp;nbsp;보호할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;2. 캡슐화 유지&lt;br /&gt;protected는&amp;nbsp;외부&amp;nbsp;클래스나&amp;nbsp;함수에서는&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;없지만,&amp;nbsp;상속받은&amp;nbsp;클래스에서는&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있기&amp;nbsp;때문에,&amp;nbsp;클래스를&amp;nbsp;사용하는&amp;nbsp;외부&amp;nbsp;코드와&amp;nbsp;내부&amp;nbsp;구현을&amp;nbsp;분리하여&amp;nbsp;캡슐화를&amp;nbsp;유지할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 유연성 제공&lt;br /&gt;파생&amp;nbsp;클래스에서&amp;nbsp;기본&amp;nbsp;클래스의&amp;nbsp;protected&amp;nbsp;멤버를&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있어,&amp;nbsp;기본&amp;nbsp;클래스의&amp;nbsp;기능을&amp;nbsp;재사용하고&amp;nbsp;확장하는&amp;nbsp;데&amp;nbsp;유리합니다.&amp;nbsp;이는&amp;nbsp;코드의&amp;nbsp;유연성을&amp;nbsp;높입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 다형성 지원&lt;br /&gt;protected&amp;nbsp;멤버는&amp;nbsp;다형성을&amp;nbsp;구현할&amp;nbsp;때&amp;nbsp;유용합니다.&amp;nbsp;파생&amp;nbsp;클래스에서&amp;nbsp;기본&amp;nbsp;클래스의&amp;nbsp;protected&amp;nbsp;멤버를&amp;nbsp;오버라이드하거나&amp;nbsp;사용하여,&amp;nbsp;더&amp;nbsp;구체적인&amp;nbsp;동작을&amp;nbsp;정의할&amp;nbsp;수&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5. 정보 은닉&lt;br /&gt;외부에서&amp;nbsp;직접&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;없기&amp;nbsp;때문에,&amp;nbsp;데이터의&amp;nbsp;안전성을&amp;nbsp;유지하면서도&amp;nbsp;상속받은&amp;nbsp;클래스에서&amp;nbsp;필요한&amp;nbsp;기능을&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;이는&amp;nbsp;불필요한&amp;nbsp;데이터&amp;nbsp;노출을&amp;nbsp;방지합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731987568188&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
class A
{
protected: //private이라면?
	int a, b;
public:
	void setAB(int i, int j) { a = i; b = j; }
};
class B :public A
{
	int c; // private
public:
	void setC(int n) { c = n; }
	void showABC() { cout &amp;lt;&amp;lt; a &amp;lt;&amp;lt; b &amp;lt;&amp;lt; c &amp;lt;&amp;lt; endl; }
	//기본 클래스의 protected 멤버들은
	//파생 클래스의 멤버에 의해 접근될 수 있다.
};
int main()
{
	A aa;
	B bb;
//	aa.a; //외부에서는 접근불가
//	bb.b; //외부에서는 접근불가
	bb.setAB(1, 2);
	bb.setC(3);
	bb.showABC();
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;main부분에 aa.a와 bb.b는 외부에서는 접근이 안되기 때문에 오류를 이르킴.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2267&quot; data-origin-height=&quot;1192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmonZb/btsKMKlhLxs/xo1ZkUdk3XTL1vp9RHTpr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmonZb/btsKMKlhLxs/xo1ZkUdk3XTL1vp9RHTpr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmonZb/btsKMKlhLxs/xo1ZkUdk3XTL1vp9RHTpr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmonZb%2FbtsKMKlhLxs%2Fxo1ZkUdk3XTL1vp9RHTpr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2267&quot; height=&quot;1192&quot; data-origin-width=&quot;2267&quot; data-origin-height=&quot;1192&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1441&quot; data-origin-height=&quot;791&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sQnbe/btsKNXRznr6/uVTWREtUu2BdCQLkQQMWZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sQnbe/btsKNXRznr6/uVTWREtUu2BdCQLkQQMWZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sQnbe/btsKNXRznr6/uVTWREtUu2BdCQLkQQMWZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsQnbe%2FbtsKNXRznr6%2FuVTWREtUu2BdCQLkQQMWZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1441&quot; height=&quot;791&quot; data-origin-width=&quot;1441&quot; data-origin-height=&quot;791&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731988351594&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;

class A {
    int a;
public:
    A(int i) {
        cout &amp;lt;&amp;lt; &quot;A의 생성자\n&quot;;
        a = i;
    }
    ~A() { cout &amp;lt;&amp;lt; &quot;A의 소멸자\n&quot;; }
    void showA() { cout &amp;lt;&amp;lt; a &amp;lt;&amp;lt; '\n'; }
};

class B : public A {
    int b;
public:
    // A의 생성자를 호출하기 위해 초기화 목록 사용
    B(int i, int j) : A(i) { // i는 기본클래스 생성자의 매개변수로 전달
        cout &amp;lt;&amp;lt; &quot;B의 생성자\n&quot;;
        b = j;
    }
    ~B() { cout &amp;lt;&amp;lt; &quot;B의 소멸자\n&quot;; }
    void showB() { cout &amp;lt;&amp;lt; b &amp;lt;&amp;lt; endl; }
};

int main() {
    B bb(10, 20); // B 객체 생성
    bb.showA();  // A의 멤버 출력
    bb.showB();  // B의 멤버 출력
    return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;A의 생성자부분을 먼저 가져와야하기 때문에 A(i)부분을 뺀다면 오류가 난다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731989661644&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
class A1 // 아버지
{
	int a;
public:
	A1(int i) { a = i; }
	int getA() { return a; }
};
class A2 // 어머니
{
	int b;
public:
	A2(int i) { b = i; }
	int getB() { return b; }
};
class B :public A1, public A2
{
	// 기본 클래스 A1과 A2로부터
	// 상속 받은 파생 클래스
	int c;
public:
	B(int i, int j, int k) :A1(i), A2(j) { c = k; }
	// i는 기본클래스 A1의 생성자로,
	// j는 기본클래스 A2의 생성자로
	// 각각 매개변수 전달
	void show() {
		cout &amp;lt;&amp;lt; getA() &amp;lt;&amp;lt; ' ' &amp;lt;&amp;lt; getB() &amp;lt;&amp;lt; ' ' &amp;lt;&amp;lt; c &amp;lt;&amp;lt; endl;
	}
};
int main()
{
	B bb(1, 2, 3);
	bb.show();
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1731989736786&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
class A1 // 기본 클래스 1
{
	int a;
public:
	A1() { cout &amp;lt;&amp;lt; &quot;A1의 생성자.\n&quot;; }
	~A1() { cout &amp;lt;&amp;lt; &quot;A1의 소멸자.\n&quot;; }
};
class A2 // 기본 클래스 2
{
	int b;
public:
	A2() { cout &amp;lt;&amp;lt; &quot;A2의 생성자.\n&quot;; }
	~A2() { cout &amp;lt;&amp;lt; &quot;A2의 소멸자.\n&quot;; }
};
class B : public A2, public A1
	// 기본 클래스 1과 2로부터
	// 상속 받은 파생 클래스
{
	int c;
public:
	B() { cout &amp;lt;&amp;lt; &quot;B의 생성자.\n&quot;; }
	~B() { cout &amp;lt;&amp;lt; &quot;B의 소멸자.\n&quot;; }
};
int main()
{
	B bb;
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;class B : public A1, public A2를 서로 바꿔서 쓴다면 부모가 바뀔 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;학생과 교수 class&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1단계&lt;/p&gt;
&lt;pre id=&quot;code_1731989819587&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;

int main()
{

	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2단계&lt;/p&gt;
&lt;pre id=&quot;code_1731989969470&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
//사람클래스(Man, 멤버변수:이름, 나이)를 만드시오.
//멤버변수를 초기화하는 생성자를 구현하시오.
//기타 함수를 구현하시오.
//사람클래스로부터 상속받은 학생클래스(Student)를 만드시오.
//(멤버변수:반, 학번), 생성자, 기타함수
//사람클래스로부터 상속받은 교수(Teacher)클래스를 만드시오.
//(멤버변수:전공, 담당과목), 생성자, 기타함수
//main함수에서 학생객체와, 교수객체를 만들어 테스트해보시오.

int main()
{
//	Student kks(&quot;김컴소&quot;, 20, &quot;C반&quot;, &quot;202012000&quot;);
//	Teacher hsh(&quot;한미소&quot;, 40, &quot;전산&quot;, &quot;C++프로그래밍&quot;);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3단계&lt;/p&gt;
&lt;pre id=&quot;code_1731990114750&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
//사람클래스(Man, 멤버변수:이름, 나이)를 만드시오.
//멤버변수를 초기화하는 생성자를 구현하시오.
//기타 함수를 구현하시오.
class Man {
protected:
	std::string name;
	int age;//멤버변수 완성
};
//사람클래스로부터 상속받은 학생클래스(Student)를 만드시오.
//(멤버변수:반, 학번), 생성자, 기타함수
//사람클래스로부터 상속받은 교수(Teacher)클래스를 만드시오.
//(멤버변수:전공, 담당과목), 생성자, 기타함수
//main함수에서 학생객체와, 교수객체를 만들어 테스트해보시오.

int main()
{
//	Student kks(&quot;김컴소&quot;, 20, &quot;C반&quot;, &quot;202012000&quot;);
//	Teacher hsh(&quot;한미소&quot;, 40, &quot;전산&quot;, &quot;C++프로그래밍&quot;);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4단계&lt;/p&gt;
&lt;pre id=&quot;code_1731990328321&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
using std::string;
//사람클래스(Man, 멤버변수:이름, 나이)를 만드시오.
//멤버변수를 초기화하는 생성자를 구현하시오.
//기타 함수를 구현하시오.
class Man {
protected:
	string name;
	int age;//멤버변수 완성
public:
	Man(string n, int a) { name = n, age = a; } //생성자는 class 이름과 같다.
};
//사람클래스로부터 상속받은 학생클래스(Student)를 만드시오.
//(멤버변수:반, 학번), 생성자, 기타함수
//사람클래스로부터 상속받은 교수(Teacher)클래스를 만드시오.
//(멤버변수:전공, 담당과목), 생성자, 기타함수
//main함수에서 학생객체와, 교수객체를 만들어 테스트해보시오.

int main()
{
//	Student kks(&quot;김컴소&quot;, 20, &quot;C반&quot;, &quot;202012000&quot;);
//	Teacher hsh(&quot;한미소&quot;, 40, &quot;전산&quot;, &quot;C++프로그래밍&quot;);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성자 만들기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5단계&lt;/p&gt;
&lt;pre id=&quot;code_1731990423145&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
using std::string;
//사람클래스(Man, 멤버변수:이름, 나이)를 만드시오.
//멤버변수를 초기화하는 생성자를 구현하시오.
//기타 함수를 구현하시오.
class Man {
protected:
	string name;
	int age;//멤버변수 완성
public:
	Man(string n, int a) { name = n, age = a; } //생성자는 class 이름과 같다.
	void m_show() {
		cout &amp;lt;&amp;lt; &quot;이름 : &quot; &amp;lt;&amp;lt; name &amp;lt;&amp;lt; endl;
		cout &amp;lt;&amp;lt; &quot;나이 : &quot; &amp;lt;&amp;lt; age &amp;lt;&amp;lt; endl;
	}
};
//사람클래스로부터 상속받은 학생클래스(Student)를 만드시오.
//(멤버변수:반, 학번), 생성자, 기타함수
//사람클래스로부터 상속받은 교수(Teacher)클래스를 만드시오.
//(멤버변수:전공, 담당과목), 생성자, 기타함수
//main함수에서 학생객체와, 교수객체를 만들어 테스트해보시오.

int main()
{
//	Student kks(&quot;김컴소&quot;, 20, &quot;C반&quot;, &quot;202012000&quot;);
//	Teacher hsh(&quot;한미소&quot;, 40, &quot;전산&quot;, &quot;C++프로그래밍&quot;);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;m_show를 만들고 부모 class 완성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;6단계&lt;/p&gt;
&lt;pre id=&quot;code_1731990696754&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
using std::string;
//사람클래스(Man, 멤버변수:이름, 나이)를 만드시오.
//멤버변수를 초기화하는 생성자를 구현하시오.
//기타 함수를 구현하시오.
class Man {
protected:
	string name;
	int age;//멤버변수 완성
public:
	Man(string n, int a) { name = n, age = a; } //생성자는 class 이름과 같다.
	void m_show() {
		cout &amp;lt;&amp;lt; &quot;이름 : &quot; &amp;lt;&amp;lt; name &amp;lt;&amp;lt; endl;
		cout &amp;lt;&amp;lt; &quot;나이 : &quot; &amp;lt;&amp;lt; age &amp;lt;&amp;lt; endl;
	}
};
class Student : public Man { // public Man으로 상속받기
private:
	string ban;
	string hak;
public:
	Student(string n, int a, string b, string h) : Man(n,a) { ban = b, hak = h; }
};
//사람클래스로부터 상속받은 학생클래스(Student)를 만드시오.
//(멤버변수:반, 학번), 생성자, 기타함수
//사람클래스로부터 상속받은 교수(Teacher)클래스를 만드시오.
//(멤버변수:전공, 담당과목), 생성자, 기타함수
//main함수에서 학생객체와, 교수객체를 만들어 테스트해보시오.

int main()
{
//	Student kks(&quot;김컴소&quot;, 20, &quot;C반&quot;, &quot;202012000&quot;);
//	Teacher hsh(&quot;한미소&quot;, 40, &quot;전산&quot;, &quot;C++프로그래밍&quot;);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;7단계&lt;/p&gt;
&lt;pre id=&quot;code_1731990905310&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
using std::string;
//사람클래스(Man, 멤버변수:이름, 나이)를 만드시오.
//멤버변수를 초기화하는 생성자를 구현하시오.
//기타 함수를 구현하시오.
class Man {
protected:
	string name;
	int age;//멤버변수 완성
public:
	Man(string n, int a) { name = n, age = a; } //생성자는 class 이름과 같다.
	void m_show() {
		cout &amp;lt;&amp;lt; &quot;이름 : &quot; &amp;lt;&amp;lt; name &amp;lt;&amp;lt; endl;
		cout &amp;lt;&amp;lt; &quot;나이 : &quot; &amp;lt;&amp;lt; age &amp;lt;&amp;lt; endl;
	}
};
class Student : public Man { // public Man으로 상속받기
private:
	string ban;
	string hak;
public:
	Student(string n, int a, string b, string h) : Man(n,a) { ban = b, hak = h; }
	void s_show() {
		m_show();
		cout &amp;lt;&amp;lt; &quot;반 : &quot; &amp;lt;&amp;lt; ban &amp;lt;&amp;lt; endl;
		cout &amp;lt;&amp;lt; &quot;학번 : &quot; &amp;lt;&amp;lt; hak &amp;lt;&amp;lt; endl;
	}
};
//사람클래스로부터 상속받은 학생클래스(Student)를 만드시오.
//(멤버변수:반, 학번), 생성자, 기타함수
//사람클래스로부터 상속받은 교수(Teacher)클래스를 만드시오.
//(멤버변수:전공, 담당과목), 생성자, 기타함수
//main함수에서 학생객체와, 교수객체를 만들어 테스트해보시오.

int main()
{
//	Student kks(&quot;김컴소&quot;, 20, &quot;C반&quot;, &quot;202012000&quot;);
//	Teacher hsh(&quot;한미소&quot;, 40, &quot;전산&quot;, &quot;C++프로그래밍&quot;);
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;8단계&lt;/p&gt;
&lt;pre id=&quot;code_1731991213860&quot; class=&quot;cpp&quot; data-ke-language=&quot;cpp&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using std::cout;
using std::endl;
using std::string;
//사람클래스(Man, 멤버변수:이름, 나이)를 만드시오.
//멤버변수를 초기화하는 생성자를 구현하시오.
//기타 함수를 구현하시오.
class Man {
protected:
	string name;
	int age;//멤버변수 완성
public:
	Man(string n, int a) { name = n, age = a; } //생성자는 class 이름과 같다.
	void m_show() {
		cout &amp;lt;&amp;lt; &quot;이름 : &quot; &amp;lt;&amp;lt; name &amp;lt;&amp;lt; endl;
		cout &amp;lt;&amp;lt; &quot;나이 : &quot; &amp;lt;&amp;lt; age &amp;lt;&amp;lt; endl;
	}
};
class Student : public Man { // public Man으로 상속받기
private:
	string ban;
	string hak;
public:
	Student(string n, int a, string b, string h) : Man(n,a) { ban = b, hak = h; }
	void s_show() {
		m_show();
		cout &amp;lt;&amp;lt; &quot;반 : &quot; &amp;lt;&amp;lt; ban &amp;lt;&amp;lt; endl;
		cout &amp;lt;&amp;lt; &quot;학번 : &quot; &amp;lt;&amp;lt; hak &amp;lt;&amp;lt; endl;
	}
};
class Teacher : public Man { // public Man으로 상속받기
private:
	string jaun;
	string dam;
public:
	Teacher(string n, int a, string j, string d) : Man(n, a) { jaun = j, dam = d; }
	void t_show() {
		m_show();
		cout &amp;lt;&amp;lt; &quot;전공 : &quot; &amp;lt;&amp;lt; jaun &amp;lt;&amp;lt; endl;
		cout &amp;lt;&amp;lt; &quot;담당과목 : &quot; &amp;lt;&amp;lt; dam &amp;lt;&amp;lt; endl;
	}
};
//사람클래스로부터 상속받은 학생클래스(Student)를 만드시오.
//(멤버변수:반, 학번), 생성자, 기타함수
//사람클래스로부터 상속받은 교수(Teacher)클래스를 만드시오.
//(멤버변수:전공, 담당과목), 생성자, 기타함수
//main함수에서 학생객체와, 교수객체를 만들어 테스트해보시오.

int main()
{
	Student kks(&quot;김컴소&quot;, 20, &quot;C반&quot;, &quot;202012000&quot;);
	Teacher hsh(&quot;한미소&quot;, 40, &quot;전산&quot;, &quot;C++프로그래밍&quot;);

	kks.s_show();
	hsh.t_show();
	return 0;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총 완성형의 모습이다.&lt;/p&gt;</description>
      <category>C++</category>
      <author>wlsn</author>
      <guid isPermaLink="true">https://wlsn3999.tistory.com/72</guid>
      <comments>https://wlsn3999.tistory.com/72#entry72comment</comments>
      <pubDate>Tue, 19 Nov 2024 13:40:47 +0900</pubDate>
    </item>
    <item>
      <title>12주차 예습과제</title>
      <link>https://wlsn3999.tistory.com/71</link>
      <description>&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;강의 주제 : 상속(코드 재사용)기본 개념 실습&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;강의 키워드(주요 단어) : 기본클래스와 파생클래스, public, private&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;주요 내용 요약&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;상속 코드 재사용&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;class A에서 만든 함수를 class B에서 &lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;class B&lt;/span&gt; : public A로 쓴다면 class public을 가져와 쓸 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;상속성(inheritance)&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;C++에선 상속성을 제공하여 작업의 중복을 지양하고 프로그램의 개발기간 단축, 기존의 프로그램 재사용, 경비절감 등을 이룰 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이미 존재하는 클래스로부터 기본적인 특성을 물려받아 그대로 사용하고 새로운 특성만을 추가로 정의함.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;클래스의 계층구조&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;위쪽의 클래스는 일반되어 속성이 간단하며, 아래 클래스들의 공통적인 속성만을 갖는다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;아래쪽의 클래스는 위쪽 클래스의 속성을 상속받으며, 자신의 개별적인 속성을 추가하여 속성이 많아진다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;상속과정&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;계층적으로 상속을 받게 되면 기존의 클래스를 그대로 사용할 수 있는 장점이 있고 또한 새로운 클래스를 보다 쉽게 만들 수 있다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;부모 superclass : 기본(Base) 클래스&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;inherits from &amp;uarr;(클래스 다이어그램) 상속과정&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;자식 subclass : 파생(Derived) 클래스&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;A is a subclass of B&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;B is a superclass of A&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;클래스의 상속 형식&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;class 파생클래스명 : 상속접근제어 기본 클래스명{&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;};&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;class Dog &lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;(파생클래스명)&lt;/span&gt; : public Animal(기본클래스명) { //예시&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;};&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Animal 클래스로부터 public으로 상속받은 Dog 클래스&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;상속 접근제어 속성에 따른 파생 클래스 멤버의 속성변화&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;상속접근제어 속성에 따라 기본 클래스 멤버의 속성이 파생 클래스에서 어떻게 변화하는지를 나타낸다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;상속접근제어속성 private&amp;nbsp; &amp;nbsp;protected public&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기본클래스의 속성&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;private&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 상속불가 &lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;상속불가 &lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;상속불가&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;protected&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private protected &lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;protected&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;public&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; private &lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;protected public&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;public 상속 접근제어&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;public 상속 접근인 경우에는 기본 클래스의 모든 public, protected멤버들은 파생 클래스의 public, protected 멤버가 된다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;기본 클래스의 private 멤버는 private 멤버로 남고, 파생 클래스에 의해서 접근될 수 없고, 일반적으로 가장 많이 사용하는 상속 접근 제어이다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;private 상속 접근제어&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;private 상속 접근인 경우에는 기본 클래스의 모든 멤버가 파생 클래스의 private 멤버가 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;기본 클래스의 public 멤버들은 클래스의 외부 (main함수 등)에서는 접근이 불가능 하고, 오직 파생클래스의 멤버함수에 의해서만 접근할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;다른 사람 모르게 자기 자식에게만 비밀리에 상속함&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;감상 평&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;상속제어접근이라는 키워드를 배워 낯설지만 재미가 있다.&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;강의 이해도&lt;/p&gt;
&lt;p style=&quot;color: #222222; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;65%&lt;/p&gt;</description>
      <category>C++</category>
      <author>wlsn</author>
      <guid isPermaLink="true">https://wlsn3999.tistory.com/71</guid>
      <comments>https://wlsn3999.tistory.com/71#entry71comment</comments>
      <pubDate>Mon, 18 Nov 2024 21:36:27 +0900</pubDate>
    </item>
  </channel>
</rss>