전체 글 (144) 썸네일형 리스트형 C++ 공부 7일차(함수 오버로딩, 템플릿) 함수 오버로딩C++에서는 동일한 이름의 함수를 여러 개 정의할 수 있다.C언어는 함수 이름으로만 함수를 구분하지만(함수의 이름이 같으면 똑같은 함수), C++은 함수 이름과 매개변수 타입 정보를 함께 사용해 구분하기 때문이다.(반환 타입, 이름, 인자가 모두 같아야 똑같은 함수)똑같은 이름의 함수를 구분하기 위해 내부적으로 고유한 이름을 부여하는 것을 네임 맹글링(Name Mangling) 이라고 한다.단, 함수의 반환형 만으로는 오버로딩이 성립하지 않는다. 함수 오버로딩을 적용하려면, 이름이 같아도 각 함수가 명확히 구분되어야 한다.함수 오버로딩이 유효해지는 조건을 몇 가지 보면 다음과 같다.1. 매개변수 타입이 다른 경우// 목적: 함수 오버로딩의 개념을 매개변수 타입이 다른 경우로 이해하기#incl.. C++ 숙제(메모리 누수 발생 코드 분석하고 보완하기, 스마트 포인터를 활용한 로그분석기 구현) 숙제 1. 메모리 누수 발생 코드 분석하고 보완하기 C++로 구현된 코드를 분석해서 메모리 누수가 우려되는 부분을 확인한 후, 코드를 수정하세요. // 메모리 누수가 발생하는 코드#include using namespace std;class MyClass {private: int* ptr;public: // 생성자 MyClass() { ptr = new int(10); // 동적 메모리 할당 cout #include using namespace std;class MyClass{private: int* ptr;public: // 생성자 MyClass() { ptr = new int(10); // 동적 메모리 할당 cou.. C++ 공부 7일차(스택 메모리, 힙 메모리 , 댕글링 포인터, 스마트 포인터, 얕은 복사와 깊은 복사, 언리얼엔진의 메모리관리와 리플렉션 시스템) 메모리메모리는 한정된 자원이므로 관리를 해야한다.스택 메모리일반 함수의 인자, 변수들은 대부분 스택 메모리 공간을 차지한다.스택 메모리의 특징컴파일 시 메모리가 할당된다.(실행 전에 크기가 정해져야 함.)변수의 생존 주기가 끝나면 선언 시 할당되었던 메모리가 자동으로 회수된다. 따라서 사용자가 직접 메모리를 해제할 필요가 없다.변수의 생존 주기를 벗어나면 자동으로 해제되므로 메모리를 더 길거나 유연하게 관리하기 어렵다.(장점이자 단점)일반적으로 할당 가능한 스택 메모리의 크기가 제한적이다.변수의 생존 주기란 선언된 라인을 기준으로 가장 가까운 마침 괄호 "}"이다.힙 메모리(동적 메모리)메모리의 전체 크기가 힙 메모리 > 스택 메모리 이다. 즉, 힙에서는 되는데 스택에서는 안되는 경우가 있다.힙 메모리의.. C++ 2번 과제(전직 시스템과 전투 시스템) 필수 기능Player라는 기본 클래스를 정의 합니다.Player 클래스에는 attack()이라는 순수 가상 함수를 포함합니다.attack() 함수는 무기를 휘두르기만 하는 기본적인 공격 함수입니다.Player 클래스를 상속받아 다양한 직업 클래스를 생성합니다.예) Warrior, Magician, Thief, Archer각 직업 클래스에서 attack()함수를 재정의(오버라이딩)하여 해당 직업의 공격을 출력하면 됩니다!메인 함수에서 Player 타입의 포인터 배열을 선언하고, 해당하는 번호를 입력하면 (1. 전사 2. 마법사 3. 도적 4. 궁수) Warrior, Magician, Thief, Archer를 각각 배열의 원소로 선언합니다. → 이후 Player는 attack() 함수를 호출하여 공격합니다.. C++ 1번 과제(상태창 구현하기) 필수 기능HP, MP, 공격력, 방어력을 크기 4의 int형 배열로 선언 및 0으로 초기화합니다.(배열 이름이 status라면 status[0]은 체력, status[3]은 방어력)HP와 MP를 입력받고, HP나 MP가 하나라도 50 이하의 숫자를 입력받을 경우 다시 입력받습니다.HP와 MP에 값을 입력받은 후 공격력과 방어력을 입력받습니다. 공격력이나 방어력이 하나라도 0 이하의 숫자를 입력받을 경우 다시 입력 받습니다.스탯 관리 시스템을 시작합니다.HP 회복 2. MP 회복 3. HP 강화 4. MP 강화 5. 공격 스킬 사용 6. 필살기 사용선택지를 출력한 후, int형 정수 하나를 입력받아서 해당 선택지를 실행합니다.call by pointer를 사용해봅시다. HP, MP포션은 5개씩 기본 지급되.. C++ 숙제 (핸드폰 정보 출력 프로그램 구현하기) 다형성과 상속의 개념을 이해하고, 반복문을 활용하여 다양한 핸드폰 브랜드와 그 특징을 출력하는 프로그램 구현하기메인함수 실행시 아래와 같이 출력 되어야 합니다.SamsungGalaxy S 시리즈AppleiPhone Pro 시리즈XiaomiRedmi Note 시리즈전체 코드의 구조는 아래와 같다.기본 뼈대 코드를 활용해 코드를 작성해보세요.//기본 뼈대 코드#include using namespace std;// TODO: Phone 클래스 구현// - displayBrand()와 showFeature() 순수 가상 함수를 포함하도록 구현하세요// - 소멸자를 반드시 virtual로 선언하세요// Samsung 클래스 작성 (Phone 클래스를 상속받음)class Samsung : public Phone .. C++ 숙제(다형성을 활용한 게임 스킬 사용 프로그램 구현하기) 다형성을 이용해 다양한 직업을 가진 모험가들이 각기 다른 스킬을 사용하는 프로그램을 구현합니다. 헤더 파일 생성 : Adventure, Warrior, Mage, Archer소스 파일 생성 : Warrior, Mage, Archer, main//Adventure.h#pragma onceclass Adventure{public: Adventure() {} virtual void useskill() = 0; // 순수가상함수 선언};//Warrior.h#pragma once#include "Adventure.h"class Warrior : public Adventure{public: Warrior() {} void useskill() override;};override의 개념은 배우지 않았지만 main함수에.. C++ 4일차(상속, protected, 멤버 초기화 리스트, 다형성, 가상 함수(virtual), 순수 가상 함수) C++의 class는 C언어의 struct 를 확장하여 객체 지향적 특성을 추가한 개념이다.상속자동차를 만든다고 가정해 봅시다. 각 자동차마다 세부 스펙은 다르겠지만, 모든 자동차가 공통적으로 가지는 속성이 있습니다.1. 속도2. 색상이러한 공통적인 특성을 매번 모든 차량에 개별적으로 구현하는 대신, 하나의 기본 클래스를 정의하고 공통 속성을 구현하고 이를 활용하면 유지 보수가 쉬워지고 코드의 중복을 줄일 수 있습니다.위 그림에서 자전거와 트럭 둘다 가지고 있는 속성인 속도와 색상을 하나의 클래스로 정의하고 자전거에는 벨 울리기, 트럭에는 짐 싣기와 같은 속성을 추가할 것이다.이때 속도와 색상같이 공통적인 속성을 기본 클래스에 정의 하고 이를 다른 클래스에 사용할 때 상속 받는다고 한다.상속의 대상이 되.. 이전 1 ··· 7 8 9 10 11 12 13 ··· 18 다음