홍정모의 따라하며 배우는 C++

홍정모의 따라하며 배우는 C++

(81개의 수강평)

1778명의 수강생
77,000원
지식공유자 · PP TREE
201회 수업 · 총 47시간 20분 수업
평생 무제한 시청
수료증 발급 강좌
수강 난이도 '입문, 초급'
유영재 프로필

동적, 정적 바인딩의 차이가 이해가 안됩니다 유영재 3일 전

안녕하세요. 두 코드를 비교하시면서 동적, 정적 바인딩의 차이를 설명해주셨는데, 결국 result나 func_ptr 모두 런타임에서 op값이 무엇이냐에 따라서 결정되는 것 아닌가요?

1
kohy741 프로필

6분 질문이요!!! 제가 시험삼아해봤는데 왜 이것들 주소가 같죠???? kohy741 3일 전

#include <iostream>
using namespace std;

const int ABC = 50;
void getData(int array[]);
void test(const int array[]);

int main()
{
	int grades[ABC];
	float average;
	getData(grades);
	cout << &grades[0] << endl;//왜 이것들 주소가 다 같죠? 달라야되는거 아닌가요??
	test(grades);
	cout << &grades[0] << endl;//왜 이것들 주소가 다 같죠? 달라야되는거 아닌가요??
	return 0;
}

void getData(int array[])
{
	
	int hehehe;
	cout << "Please input a number " << endl;
	cin >> hehehe;
	array[0] = hehehe;
	
	cout << &array[0] << endl;//왜 이것들 주소가 다 같죠? 달라야되는거 아닌가요??
	
}

void test(const int array[])
{
	cout << &array[0] << endl; //왜 이것들 주소가 다 같죠? 달라야되는거 아닌가요??
}

13
이영인 프로필

교수님 C++을 이용해서 GUI 프로그램을 개발하려고 한다면 MFC를 사용하지 않더라도 win32api는 공부를 해야되는 건가요?? 이영인 15일 전

교수님 C++을 이용해서 GUI 프로그램을 개발하려고 한다면 MFC를 사용하지 않더라도 win32api는 공부를 해야되는 건가요??

3
유영재 프로필

기존 프로그래밍 방식과 객체지향 프로그래밍의 차이 유영재 19일 전

예전부터 헷갈렸던 부분인데 객체지향과 절차지향을 비교해서 설명하는 부분에서,

1. 서로 반대되는 개념이 아닌 것 같은데 맞지 않나요?

2. 객체지향 프로그래밍이 무엇인가라고 물어보면 클래스 기반의 기능 중심 프로그래밍이라고 말하면 될까요?

1
OMG 프로필

C헤더와 C++헤더의 차이점 질문드립니다! OMG 21일 전

교수님 안녕하세요

일전에 유튜브에 언어 실력의 상/중/하 구분 관련하여 질문드렸었는데 기억하시는지 모르겠네요..ㅎㅎ

2.2 정수형 강의에 numeric_limits라는  함수가 소개 되었는데 처음보는 함수여서 정의부 파일을 찾아가 보니

climits을 include 하고 climits는 limits.h를 include 하더라구요

c언어로 입문해서 그런지 c++ 코딩 할 때도 필요 할 때 c에서 쓰던 header들을 쓰곤 하는데(math.h , limits.h , stdio.h 등)  각각

대체 헤더들이 있는걸로 알고 있는데(cmath, limits + climits, cstdio)  c++ 코딩 할 때는 (대체 헤더가 맞는지 모르겠지만) .h 헤더를

지양하는게 나을 까요?

2
tndyd8282 프로필

멤버의 존재를 클래스가 관리하지 않는다는 의미 tndyd8282 21일 전

수고 많으십니다. 교수님

항상 친절하게 답변해주셔서 감사합니다. 먼저 아시고 계시겠지만 표지에 Aggregation인데 Association으로 되어 있네요. 오타로 보입니다^^

10.1도 다시 돌아가서 듣고 왔는데 멤버의 존재를 클래스가 관리하지 않는다는 부분을 제가 이해한 것이 맞는지 모르겠네요. 제가 이해한 바와 질문을 아래와 같습니다. 

- Lecture 클래스의 인스턴스가 소멸하게되면 그 인스턴스의 멤버변수인 Teacher*, Student*는 소멸하게 된다.

- 주소값 및 주소값을 저장하고 있는 벡터의 소멸이기 때문에 포인터가 가리키는 값은 그대로 유지가 된다. 유지가 된다고 하더라도 멤버변수는 소멸되기 떄문에 해당 인스턴스를 통해서는 포인터가 가리키는 값에 접근이 불가하다.

- 만약,  다른 Lecture의 인스턴스에서 소멸했던 인스턴스와 동일한 주소값을 멤버변수에 저장해두었던 경우에만 한정적으로 기존에 사용하던 정보에 접근이 가능하다. 

 질문) 바로 위의 문장과 같은 점 때문에, Aggregation을 '다른 클래스에도 속할 수 있다' ' 멤버의 존재를 클래스가 관리하지 않는다' 라고 표현하는 것인가요? 만약 그렇다면 클래스가 아니라 '다른 인스턴스에도 속할 수 있다' '멤버의 존재를 인스턴스가 관리?'가 맞지 않나요?

2
박민혁 프로필

스레드를 강제 종료시키려고 할려면 어떻게? 박민혁 25일 전

스레드를 강제 종료시키는 인터럽트는 어떻게 구현을 하는지요? (std:thread, future, std::transform_reduce 사용시)

1
kohy741 프로필

양자컴퓨터 kohy741 25일 전

양자컴퓨터 나오면 

어떻게 되나요??

작동방식이 기존컴퓨터랑 완전다르다던데

그럼 기존 컴퓨터는 다 무용지물이 되나요??? 

3
김해일 프로필

유튜브의 강의와 다른 점이 있나요? 김해일 26일 전

유튜브 강의를 보다가 넘어왔는데

유튜브에서 본 부분들을 다시 봐야할정도로

다른 부분이 많나요?

1
옥도윤 프로필

구조체를 반환받는 함수 컴파일에러 질문입니다. 옥도윤 28일 전

안녕하세요 교수님 제가 코드를 따라 작성해보던중에

'하나의 반환값이 반드시 있어야한다'는

컴파일 에러가 있어서 다음과 같이 수정하여

각 멤버를 접근해보았습니다.

#include <iostream>

using namespace std;

struct S

{

int a, b, c, d;

};

S getStruct()

{

S my_s{ 1, 2, 3, 4 };

return my_s;

}

int main()

{

S my_s = getStruct();

cout << my_s.a << endl;

cout << my_s.b << endl;

cout << my_s.c << endl;

cout << my_s.d << endl;

cout << my_s.a << endl;

cout << my_s.b << endl;

cout << my_s.c << endl;

cout << my_s.d << endl;

return 0;

}

제가 질문 드리고 싶은 것은 두가지입니다.

제가 수정한 코드가 

교수님께서 가르치려는 의도가 내부적로도 같은 코드인가?

그리고 앞에서 말씀하신 것처럼 인자로 들어갈 때와 반환받을 때 복사가 자주 일어나는 가?

입니다. 

부탁드립니다~교수님!

2
tndyd8282 프로필

C2676 에러 tndyd8282 29일 전

C2679 binary '<<': no operator found which takes a right-hand operand of type 'const Position2D'

위의 에러가 떠서 해결이 되지 않습니다.

원인이 뭘까요?

컴파일러 버전 탓인지.. VS2015 쓰고있습니다. 

// Monster.h

#pragma once
#include "Position2D.h"


class Monster
{

private:
	std::string m_name; 
	Position2D m_location; 
public:
	Monster(const std::string name_in, const Position2D & pos_in)
		: m_name(name_in), m_location(pos_in)
	{}

	void moveTo(const Position2D & pos_target)
	{
		m_location.set(pos_target);
	}

	friend std::ostream & operator  << (std::ostream & out, const Monster & monster)
	{
		out << monster.m_name << "  " << monster.m_location; // m_,location으로 변경 깔끔해짐
		return out;
	}

};


//Position2D.h
#pragma once
#include <iostream>
#include <string>

class Position2D
{
private:
	int m_x;
	int m_y;

public:
	Position2D(const int & x_in, const int & y_in)
		:m_x(x_in), m_y(y_in)
	{}

	void set(const Position2D & pos_target)
	{
		set(pos_target.m_x, pos_target.m_y); 
	}
	void set(const int & x_target, const int & y_target)
	{
		m_x = x_target;
		m_y = y_target;
	}

	friend std::ostream & operator << (std::ostream & out, Position2D & pos2d)
	{
		out << pos2d.m_x << "  " << pos2d.m_y << std::endl;
		return out;
	}

};


// Monster.cpp


#include "Monster.h"

using namespace std;

int main()
{

	Monster mon1("jack", Position2D(0, 0));

	{
		mon1.moveTo(Position2D(1, 4));
		cout << mon1 << endl;
	}

	return 0;

}

2
우쭈쭈 프로필

그래픽스 공부 질문드립니다! 우쭈쭈 1달 전

안녕하세요. 교수님.

게임 엔진과 게임 개발자가 꿈인데 그래픽스 공부는 어떻게 해야 될까요?

전공자라 기본기는 있는 편인데,

그래픽스 수업은 들은 적도 없고 진입 장벽도 높은 편인 것 같아서 어떻게 공부해야 될지 잘 모르겠습니다.

수학과 개발은 꾸준히 공부중인데 opengl 과 directx 중 뭐부터 공부해야될까요 ?

또한 그래픽스 책이라도 추천해주시면 감사하겠습니다.

1
kohy741 프로필

6분6초 꿀팁공유 kohy741 1달 전

윈도우즈키 +방향키 해도되지만 윈도우 옮길때처럼 마우스 왼쪽클릭 누른상태로 옆으로 던져도 똑같이 됩니다 꿀팁공유 ;)

3
just_CS 프로필

9.2 입출력 연산자 오버로딩 강좌 중 질문 입니다. just_CS 1달 전

입출력 연산자 오버로딩 강좌에서 입출력 연산자 함수는 멤버 함수로 못 만든다고 하셨는데, 이유를 들어도 잘 이해가 되지 않아 질문 드립니다.

4
김도엽 프로필

6.9 포인터연산과 배열인덱싱 연습문제 질문 김도엽 1달 전

안녕하세요! 

선생님의 강의를 차근차근 배워가며 6.9까지 왔습니다. 

6.9 강의 마지막에 내주신 char형 데이터를 포인터연산과 While&Break를 사용하여 출력해보라는 과제를 주셨습니다.

KIM이 출력은 됩니다. 하지만 이후에 수많은 문자들과 함께 11dB이라는 문자도 출력됩니다. (참고로 XCode 사용중입니다.)

어떠한 점이 문제인지 도저히 모르겠어서 질문올립니다.

첫번째로 문제화면 올렸고 코딩은 아래 붙여넣었습니다.

#include <iostream>

using namespace std;

int main()

{

    char c[] = "KIM";

    char *ptr = c;

    

    while(true)

    {

    if(ptr == nullptr)

        break;

    else

    {

    cout << *ptr << endl;

    }

    ptr=ptr+1;

    }

}

    

시간 내주셔서 감사합니다!

    

5
지식공유자 되기
많은 사람들에게 배움의 기회를 주고,
경제적 보상을 받아보세요.
지식공유참여
기업 교육을 위한 인프런
“인프런 비즈니스” 를 통해 모든 팀원이 인프런의 강좌들을
자유롭게 학습하는 환경을 제공하세요.
인프런 비즈니스