묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨홍정모의 따라하며 배우는 C++
함수
int dosomting(int x) { return ++x; } int dosomting1(int x) { cout << ++x << endl; } int main() { int x = 4; cout << dosomting(x) << endl; //5 dosomting1(x); //5 cout << x << endl; //4 } 함수에 매개변수를 넣게 되면 변수가 복사가 되어서 값을 바꾸어도 본래의 값에는 영향을 미치지 않는다는 것을 알고 있습니다. 하지만 출력시켰을 때가 조금 헷갈립니다. 출력을 하게 되었을 때는 값이 바뀌어서 나왔습니다. main의 x와 다른것인것인 return값이 나오는 것같은데 main의 x와는 관련이 없는것인가요? dosomting과 dosomting1이 작동하는 방식이 같은 것인가요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
질문있습니다.
안녕하세요. 강의를 보기 전 먼저 문제를 보고 풀어봤습니다. 배열 기호 안에서 연산을 하지 않고 temp라는 변수에 값을 담은 후 증감을 했습니다. 이렇게 하면 연산을 더 하게 돼 크기가 큰 문자열에선 속도 저하가 일어날까요?
-
미해결홍정모의 따라하며 배우는 C++
14:00부근에서
설명하실 때, resource의 copy연산자로 가는게 아니고, 거기서 그냥 포인터만 복사한다고 하셨습니다. 근데 이 경우에 파라미터 안에 R-Value가 들어오는 경우에는 shallow copy를 하기 위해 AutoPtr의 operator로 가는 것이고, L-Value가 들어오는 경우 deep copy를 하기 위해 resource의 copy operator로 간다고 생각하는게 맞나요? 혹시, AutoPtr에서 그냥 shallow, deep copy를 구현할 수 있는 코드를 짜면, Resource에서는 굳이 copy constructor나 operator를 넣지 않아도 되는지가 의문입니다.(AutoPtr<Resource>를 이용할 때) 그리고 AutoPtr<Resource> 이걸 어떻게 해석해야 하는지가 너무 헷갈리는데 정리해주실 수 있을까요?ㅜ 예전 강의 보면 vector<int>나 array<int>와 같이 해석하려는데, 여기서는 AutoPtr과 Resource가 둘다 class라서 해석하는데 어려움이 있는 것 같습니다.
-
미해결홍정모의 따라하며 배우는 C++
C언어를 하나도 모른상태로 수강해도 되나요??
학교에서 C++를 하는데 교수님이 C언어를 알고계신상태로 강의를 하셔서 이해가 하나도 안가더라구요 저는 전과를 해서 C언어를 안배웠는데 다른 애들은 다 배운상태고 C언어를 배우기엔 시간이 너무 촉박해서 그런데 바로 C++배워도 될까요??
-
미해결홍정모의 따라하며 배우는 C++
배열과 포인터, 문자열 심볼릭 상수와 관계
int main() { char name[] = "ABC"; char *name2 = "DEF"; int arr[] = {10, 20, 30}; cout << name << endl; //ABC cout << &name << endl; //0x16..94 cout << *name << endl; //A = name[0] cout << *(name+1) << endl; //B = name[1] cout << &(*(name+1)) << endl; //BC ? --------질문(1) //cout << &(name+1) << endl; // --------------질문(1) cout << name2 << endl; //DEF cout << &name2 << endl; //0x16..88 cout << *name2 << endl; //D = ? -------------질문(2) cout << *(name2+1) << endl; //E = ? ----------질문(2) cout << arr << endl; //0x16..98 ? ------------- 질문(3) cout << &arr << endl; //0x16..98 ? ------------질문(3) cout << *arr << endl; //10 = arr[0] } 질문 1 주소값이 나오지 않고 BC가 나오는 이유는 무엇인가요 cout때문인가요 ? 또 &(name+1)은 왜 안되는 것인가요 질문 2 char *name 이 배열과 비슷하게 작동이 되는 것 같은데 배열로 봐야 하는 것인가요? 그럼 name2[0]으로 봐도 무방한것인가요 질문 3 arr와 &arr출력값이 같은데 arr는 주소값이라서 앞에 & 가 생략이 된 것인가요? 제가 봐도 너무 질문이 많고 두서가 없는데 너무 헷갈려서 정리가 잘 안되네요 죄송해요 해결부탁드립니다 ㅜ
-
미해결홍정모의 따라하며 배우는 C++
for문에 증감연산자 질문입니다.
for문 예제를 보면 for (int count = 0; count < 10; ++count) 에서 증감연산자 ++가 count앞에 오는걸 알 수 있는데요, 이 for문은 for (int count = 0; count < 10; count++) 로 바꾸어도 같은 결과가 출력이 되는것 같은데 ++count를 할때와 count++를 할때의 차이점이 있을까요?
-
미해결[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
논리 표현식
논리 표현식에서 2분 10초쯤에 1번째 식은 좌항이 T, 우항이 F이므로 전체 식이 F라고 하셨는데, 2번째 식에서 좌항이 T, 우항이 F이므로 둘중 하나라도 T가 있으니까 전체 식이 T라고 하셨습니다. 이게 왜 이렇게 되는 건지 모르겠습니다 ㅜㅜ
-
미해결홍정모의 따라하며 배우는 C++
5:10 부분 결과값이 강의와 약간 다르게 나오는데 원인이 뭔지 모르겠습니다
main.cpp #include "AutoPtr.h" #include "Resource.h" using namespace std; AutoPtr<Resource> generateResource() { AutoPtr<Resource> res(new Resource(3)); return res; } int main() { { AutoPtr<Resource> main_res; main_res = generateResource(); } return 0; } //////////////////////////// AutoPtr.h #pragma once #include <iostream> template<class T> class AutoPtr { public: T* m_ptr = nullptr; public: AutoPtr(T* ptr = nullptr) :m_ptr(ptr) { std::cout << "AutoPtr default constructor" << std::endl; } ~AutoPtr() { std::cout << "AutoPtr destructor" << std::endl; if (m_ptr != nullptr) delete m_ptr; } T& operator*() const { return *m_ptr; } T* operator->()const { return m_ptr; } bool isNull()const { return m_ptr == nullptr; } AutoPtr(const AutoPtr& a) { std::cout << "AutoPtr copy constructor" << std::endl; //deep copy m_ptr = new T; *m_ptr = *a.m_ptr; } AutoPtr& operator=(const AutoPtr& a) { std::cout << "AutoPtr copy assignement" << std::endl; if (&a == this) return *this; //deep copy m_ptr = new T; *m_ptr = *a.m_ptr; return *this; } ///////////////////////////////////// Resource.h #pragma once #include <iostream> class Resource { //private: public: int* m_data=nullptr; unsigned m_length = 0; public: Resource() { std::cout << "Resource default constructed" << std::endl; } Resource(unsigned length) { std::cout << "Resource length constructed" << std::endl; this->m_data = new int[length]; this->m_length = length; } ~Resource() { std::cout << "Resource destroyed" << std::endl; if (m_data != nullptr) delete[]m_data; } Resource(const Resource& res) { std::cout << "Resource copy constructed" << std::endl; Resource(res.m_length); for (unsigned i = 0; i < m_length; ++i) m_data[i] = res.m_data[i]; } Resource& operator =(Resource& res) { std::cout << "Resource copy assignment" << std::endl; if (&res == this)return *this; if (this->m_data != nullptr)delete[]m_data; m_length = res.m_length; m_data = new int[m_length]; for (unsigned i = 0; i < m_length; ++i) m_data[i] = res.m_data[i]; return *this; } void print() { for (unsigned i = 0; i < m_length; ++i) std::cout << m_data[i] << " "; std::cout << std::endl; } }; 웬만하면 코드 질문은 스스로 해결하려고 했는데 며칠 고민하면서 디버거로 찍어봐도 중간중간에 뜬금없이 생성자가 호출되거나 다시 복사가 되는 원인을 못찾겠습니다
-
미해결홍정모의 따라하며 배우는 C++
비쥬얼 스튜디오 오류
비쥬얼 스튜디오가 오류가 나는 듯 합니다. 코드에 오류나 문제는 없는것 같은데 출력값이 안나오네요... While.cpp 파일에서 Ctrl+F5했는데 이진수.exe가 실행된걸 보면 파일에 관한 문제 같은데.. 뭐가 문제일까요?
-
미해결홍정모의 따라하며 배우는 C++
공변 반환값 관련 질문 있습니다
8:10 에서 b의 포인터를 내부적으로 a 포인터로 바꿔서 print()를 호출한다고 하셨는데, ref의 자료형은 A지만 A의 getThis() 는 virtual 이므로 B의 포인터가 반환되었고, B의 print()를 호출하려 했지만 A의 print()가 virtual 이 아니라서 B 대신 A의 print()가 호출된 게 맞나요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
자료구조는 전부 다뤄주시나요?
안녕하세요. 좋은 강의 잘 보고 있습니다. 강의를 보던 중 자료구조 책을 따로 살지 말지 고민중입니다. 책을 사면 더 좋지만 강의를 더 반복해서 돌려보는 편이 집중이 잘 되는 편 입니다. 강의에서 필요한 자료구조는 다 다뤄주시면 사진 않을 생각이라 여쭤봅니다.
-
해결됨[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
파괴자 질문드립니다.
'클래스 생성자와 파괴자' 강의 5:58 부분에서 Coding 클래스 생성자를 temp에 대입하였는데, 기존에 있던 Panda클래스가 아닌, Coding클래스가 소멸한다고 하고 뒤에 Coding 클래스가 출력되는지 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C++
extern 관련 질문이 있습니다
extern 은 다른 소스파일의 변수를 공유한다는 의미로 사용한다고 알고 있습니다. (a.cpp와 b.cpp 소스 파일이 있을 때, a.cpp에는 int num=123; , b.cpp에는 extern int num; 와 같은 식으로) 그런데 강의 34:00 에 보면 test.cpp에서 extern int a=123;로 초기화를 한 후 main.cpp에서 extern int a; 를 작성하시던데 두 cpp 파일에서 변수 a에 모두 extern을 사용하는 이유를 알고싶습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
맥에서 실행할 때 에러
맥북에서도 c++을 쓸 일이 있어서 vscode를 깔고 파일을 다운받아 cpp_study 파일에서 빌드를 실행했는데 사진과 같은 에러가 발생하네요 ㅠㅠ 구글링을 해봐도 vscode가 비주얼 스튜디오랑은 많이 다른것 같아서 설정을 어찌 바꿔야 할 지 모르겠는데 혹시 알고계신다면 알려주시면 감사하겠습니다
-
해결됨[하루 10분|C++] 누구나 쉽게 배우는 C++ 프로그래밍 입문
참조변수 질문이요
참조변수는 어떤경우에 쓰는거고 포인터변수로 swap하는거랑 차이점이 뭔가요??
-
미해결홍정모의 따라하며 배우는 C++
[5:32] base class를 상속받아 내용이 추가되지 않는 class를 만드는 이유
안녕하세요, class의 멤버함수를 specialization하기 위해서 상속을 받아 구현하는 부분에서 이해가 되지 않아 질문드립니다. 강의에서는 아래와 같이 specialization 하려하는 멤버함수가 포함된 class를 base class로 변경 후 이를 상속받는 class를 하나 정의합니다. 이 이유가 무엇인가요? 'char' 형 이외에 대해서는 base class와 똑같이 기능하게 하기 위해서 인가요? 명확하게 이해가 되지 않아 질문드립니다. 바쁘시겠지만 답변해주시면 공부하는데 큰 도움이 될 것 같습니다. 감사합니다! template<typename T, int size> class StaticArray_BASE { private: T m_array[size]; public: T* getArray() { return m_array; } T& operator[](int index) { return m_array[index]; } void print() { for (int count = 0; count < size; count++) cout << (*this)[count] << ' '; cout << endl; } }; template<typename T, int size> class StaticArray :public StaticArray_BASE<T, size> { };
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
부동소수점 계산에 대해서..
제가 수학지식 좀 부족한 부분이 있어서 그러는데 정규화를 하고 부호와 유효숫자와 지수들은 모르고 지나가도 나중에 무관한가요?? 아니면 뒤로 갈수록 필요한가요.. 근사값이라고 기억만 하면 되는 부분인가요 따로 공부를 해와야 하나 궁금합니다.
-
미해결홍정모의 따라하며 배우는 C++
실행창과 컴파일,런타임
빌드를 하는 과정을 컴파일하는 과정으로, 실행창에 결과가 나오는 것을 런(run)을 거치는 과정으로 이해할 수 있는 건가요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
시간복잡도 문의
시간복잡도가... 풀이와 같이 하면 j = 1일때 n번 j = 2일때 n/2번 j = 3일때 n/3번 … j = n일때 n/n번 즉 total n * (1 + 1/2+1/3+…+1/n) 를 계산한 것이 시간복잡도가 되는것 맞나요 ? 아직 미흡해서 질문 남깁니다
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
std? vector?
선생님 이런 질문 드려서 정말 죄송합니다. 그렇지만 컴맹인 제가 기본 c언어 문법부터 선생님 강의만 믿고 따라왔습니다. 그런데 그쪽에서도 여기서도 설명해주시지 않았던 , 나오지 않던 cin?cout? std::vector 이나 #include <vector> 이런것들이 나오니 너무 당황스럽습니다. 죄송하지만 어떻게 하면 따라갈수 있을까요 ,,? 어떤 강의를 듣고 오라면 듣고 오겠습니다 ㅜㅜㅜ 따라가고 싶은데 모르는 내용에 너무 답답해서 질문 남겨봅니다 ㅜㅜ