묻고 답해요
164만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
포인터계산
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. #include <iostream>using namespace std; int main(void){ int number = 1; int* ptr = &number; cout << &ptr << endl; cout << ptr << endl; cout << *ptr << endl; //*ptr += 1; //*ptr++; cout << *ptr << endl; }/* *ptr++;008D19AB mov eax,dword ptr [ptr]008D19AE add eax,4008D19B1 mov dword ptr [ptr],eax *ptr += 1;006419AB mov eax,dword ptr [ptr] 006419AE mov ecx,dword ptr [eax] 006419B0 add ecx,1 006419B3 mov edx,dword ptr [ptr] 006419B6 mov dword ptr [edx],ecx */ 궁금증이 생겨 여러 실험하면서, 어셈블리를 구경해봤습니다. ++, +=1 은 동일하게 1을 더할 때 사용한다고 배웠는데, 위와 같은 차이가 발생한 이유는 무엇인지 궁금합니다. (강의서 설명해주신 것처럼 1증가니까, 바구니 크기만큼 해서 4가 증가한 것으로는 이미 이해를 했습니다. ) (연산자 우선순위 상 문제가 있을 수도 있을 것으로 생각하여, 찾아봤습니다. *가 1순위, ++은 그 다음, +=은 제일 마지막이었습니다. 어떠한 경우든 *가 선이기 때문에 ++, += 의 영향은 없을 것이로 판단하였습니다. 이 생각에 오류가 있는지 궁금합니다.) 2. 저것의 결과는 *ptr++의 경우, -858993460이라는 수가 나왔는데, 이 이유를 잘 모르겠습니다.
-
미해결Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
busrefresh 에러
안녕하세요. postman으로 busrefresh 전송할때 에러나서 어떻게 해결할 수 있을지 질문 드립니다. 127.0.0.1:8000/actuator/busrefresh 혹은 127.0.0.1:8000/user-service/actuator/busrefresh 로 전송하면 500 Internal Server Error 로 응답 받으면서 "org.springframework.messaging.MessageHandlingException: error occurred in message handler [org.springframework.integration.amqp.outbound.AmqpOutboundEndpoint@5c20f1e]; nested exception is org.springframework.amqp.AmqpConnectException: java.net.ConnectException: Connection refused: connect, failedMessage=GenericMessage [payload=byte[202], headers={id=673f43aa-6af0-73de-d386-1b08af6ed560, contentType=application/json, target-protocol=amqp, timestamp=1660318593074}]\r\n\tat org.springframework.integration.support.utils.IntegrationUtils.wrapInHandlingExceptionIfNecessary(IntegrationUtils.java:191)\r\n\tat org.springframework.integration.handler.AbstractMessageHandler.handleMessage(AbstractMessageHandler.java:65)\r\n\tat org.springframework.cloud.stream.binder. 해당 에러메세지를 trace 값으로 내려받고 있습니다. user-service에서도 로그를 보면 Connection refused: connect 로그가 찍힙니다. application.yml에 management endpoint 부분에 busrefresh도 추가했습니다. 해당 설정에서 busrefresh를 제외한 다른 값들은 문제 없지 잘 작동하고 있습니다.
-
미해결오라클 성능 분석과 인스턴스 튜닝 핵심 가이드
텔넷 접속안되요
사설 아이피, 공용 아이피 2개가 생성됐는데 디폴트는 공용 아이피로잡혀 있습니다 강의 대로 텔넷도 설치하고 포트도1521로 해서 연결 시도 하였으나 연결이 안되네요.. 그래서 서버 아이피로 해서 핑으로 찔러도 연결이 안되어 있습니다..ㅠㅠ
-
미해결앨런 iOS Concurrency(동시성) - 디스패치큐와 오퍼레이션큐의 이해
DispatchQueue main 동작 방식
안녕하세요. 강의를 보다가 병렬큐에서의 동작 방식은 이해를 했지만 메인큐 즉 serial큐에서의 동작 원리가 정확하게 이해가 되지 않아서 질문을 남깁니다. 1. 메인스레드에서 main.async를 사용하게되면 현재 메인스레드에서 작업중인 태스크를 메인큐로 보냈다가 이걸 다시 메인스레드로 비동기로 할당한다는건데 동작 방식이 결국 후순위로 미룬다는 의미인거 같아서 조금 헷갈리네요.. 메인스레드에서 main.async를 사용한다는 것은 오래 걸리는 작업은 나중에 해~ 이런 의미로 사용하는걸까요? 이러한 동작방식은 defer를 사용하는 것과 유사해보입니다! 2. DispatchQueue.main.async { for i in 0..<20 { print(i) } } //2번 작업 for i in 60..<80 { print(i) } //3번 작업 DispatchQueue.main.async { for i in 20..<40 { print(i) } } //4번 작업 for i in 40..<60 { print(i) } 이러한 코드를 테스트 했을 때 동작 순서가 2 -> 1 -> 4 -> 3으로 예상을 했습니다. 그 이유는 1번 작업이 메인 큐로 갔을 때 다음 스레드가 진행되고 메인스레드에 2번 작업이 1번작업 뒤에 바로 할당된다고 생각을 했습니다. 하지만 동작 방식은 2 -> 4 -> 1- > 3으로 하는 것을 확인했습니다. 메인 스레드에서 비동기로 호출 했을 때 기존에 메인스레드에 있는 작업들의 동작 속도가 너무 빨라서 메인큐에서 메인스레드로 할당하기 전에 작업이 끝나서 그런건가라고 생각을 하고 sleep을 줘도 순서는 동일했습니다. 다음과 같이 main스레드에서 비동기를 처리하게 되면 파일에 선언된 코드들이 다 순차적으로 실행되고 나중에 비동기로 넘긴 태스크들이 메인스레드에 할당되는 것인지도 궁금합니다. 3. URLSession은 비동기적으로 작동하는 것으로 알고있는데 이것 또한 메인스레드에서 동작하고 있는 것이 맞나요? 혹시 제가 이해한 개념 중 오개념이 있다면 말씀해주시면 감사하겠습니다!
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
WebConfig에서 등록하는건 항상 글로벌로 적용되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]WebConfig에서 등록하는 fomatter는 항상 글로벌로 적용되나요? 특정 Controller class에만 적용되게 하거나, Annotation 기반 formatter처럼 특정 method에만 적용되게 할 순 없는건가요?
-
미해결풀스택 리액트 라이브코딩 - 간단한 쇼핑몰 만들기
update가안되네요...뭐가문제인지..
중간에 영상이 씹혀서그런지... 댓글보고 수정해도 update가안되네요.. 진짜 한 10번은 돌려본것같은데.... 깃허브가도 브랜치도없고.. 완성된거밖에...... 일단 요렇게 add하면 정상으로 작동하여 담깁니다. update하면 이렇게뜨는데... 반환값이이상하여 핸들러를 암~~만 쳐봣는데 .... 도저희 못찾겟네요,.. github 주소첨부합니다...제발도와주십시요.... https://github.com/MaJunghan/ViteReactQuery invalidQueries로 update치면 잘되긴합니다..
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
URI naming 문의드려요.
영한님, 안녕하세요. URI naming 관련해서 2가지 문의를 남기고 갈께요. 항상 바쁘시지만 고견을 구합니다. 1) API 버전 - 영한님, 수많은 강의에서 보면 API 에는 주로 V1, V2 같은 버전을 기록하시는 것 같던데 이번 강의에서는 버전에 대한 말씀은 없으시더라고요. 보통 버전을 URI 에 포함시키는게 좋은 지, 만약 포함시킨다면 버전의 위치는 어디가 가장 적합한지 알고 싶습니다. 2) 복잡한 쿼리 조회성 API naming - 현업에서는 검색조건이 다양하게 있고 결과도 UI Grid 에 다양한 컬럼이 있는 표 화면을 활용하는 케이스가 많은데요. (보통 API 에서 다수의 테이블을 조인하는 쿼리를 실행해서 출력하는) 이런 API는 사실 Main Resource 를 정하기 어려운 경우가 상당히 있는 것 같습니다. 이런 복잡한 쿼리를 통해 화면에 목록성 데이터를 출력하는 Get API 는 네이밍을 어떻게 잡는 게 좋을까요?
-
미해결스프링 핵심 원리 - 기본편
TestBean class작성시
안녕하세요 영한님의 코드를 잘못 따라 치다가 static이 아닌 public class TestBean으로 작성하고 test를 실행해보았는데요 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'autowiredTest.TestBean': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.autowired.AutowiredTest' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'hello.core.autowired.AutowiredTest' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} 라고 떠서 질문 남깁니다! 왜 static으로 말고 public으로 할시 저런 문제점이 생길까요? 답변 미리 감사합니다!
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
Activity가 아니라 Fragment로 연결하는 이유
안녕하세요. 다름이 아니라 왜 하단바 navigation 연결 할 때 Activity 가 아닌 Fragment들을 연결하는 지 궁금해서 질문 남기게 되었습니다. 또, Activity 로 연결하면 발생하는 문제점들이 궁금해요! 답변해주시면 감사하겠습니다.
-
미해결
How To Get Unlimited Robux On Roblox With Mod APK
Roblox MOD APK is a game that facilitates interaction between players and enables you to create something that comes to your mind without any trouble at all. You can immerse yourself in a world of visionaries and do whatever comes to your mind. It will be great to interact with people and build relationships with them and interact with a global community. The Roblox player mod apk with an unlimited Robux site is valuable for game players and developers. Here is the complete guide about Roblox MOD with Unlimited Robux and also a mod menu with a lot of features; hopefully you will like them. Complete Guide – Roblox Mod Apk You can play a wide range of games on Roblox and connect with friends online using the Roblox community. There are five sections to the Roblox application, similar to any community app. You can see your friends in the home tab in the section designated for friends. Imagine what you can be on Roblox, the ultimate virtual universe where you can create, share experiences with your friends, and be anything you want. Immerse yourself in an ever-expanding range of immersive experiences crafted by a global community! Roblox mod apk unlimited robux avatars can be easily customized with so many options available. The avatar can be changed in every way. It is possible to customize the skin color, hair, body shape, face, and clothing. There are also animation options such as running, jumping, swimming, and standing. In addition to ninja animation and old-school animation, there is zombie animation and stylish animation. Additionally, you can decide on the gestures you want to use in the game. Introduction of Roblox As you can see, this game was made and published by the company Roblox corporation, and it was updated on July 30, 2020, the size of this game is 93MB, and it was released & published on the Play Store on Jul 16, 2020, and at the moment it is available for download from the Play Store. An idea of its popularity can be gained from this. More than that is unnecessary. There are 14 million comments on this game, meaning the game is considered to be very good by 14 million people. I would like to inform you that you can play the Roblox Mod apk Unlimited Robux very easily and even with your friends. In addition to its multiplayer mode, it also has a sports mode. If you know anything about this game, please let me know. Here you will find the Roblox Mod apk Unlimited Robux that you wish to take. If you want to know more about this game, the size of this game, and how many MB this game comes in, you can estimate this from the paragraph below. Also, let me tell you that if you have any problem, then you can explain it in the Comments. Features of the Roblox mod apk There are some modified features in the Roblox MOD APK. The following two features are important to know: Advertisements not allowed The Roblox ads are shown to free users on their smartphones. On the other hand, if you’re using the Roblox mod apk on an Android smartphone, you can’t see these ads. This is one of Roblox’s notable features. The amount of Robux is Unlimited? There is no limit to the number of coins you can get in your game. Therefore, your account will contain the most valuable items. Roblox avatars can be customized with your creations by using this tool. This is a paid feature for most users. You can download the items for free on your Android device. This is available for Android devices. Tips on How To Play Avatars can be customized with a wide range of dance moves and controls that can be purchased from stores. In the Roblox store, you can unlock new and useful features for your avatar as time passes. When riding your skateboard, you can choose the plane tool to take it in the air. If you want to freeze everything in the game, press the F1 or Ctrl buttons. In the game, Robux is the currency used, and your success in the game will ultimately depend on this currency. Key Features Of Roblox Unlimited Money Unlimited Robux Unlock Characters Unlimited Body parts Unlimited Clothing Unlimited Gears Unlock Everything Unlimited Everything Easy To Use Pros When you play this game, your creative side will come out. For those who want to gain professional experience with game development, this is an excellent platform. It’s just like real life in the way it has the capacity to leave you confused. Children can learn about physics dimensions through this game as well. Cons Depending on the game, additional storage space and external sources may be needed as well. In addition to the poor graphics, its inappropriate a
-
미해결풀스택을 위한 탄탄한 프런트엔드 부트캠프 (HTML, CSS, 바닐라 자바스크립트 + ES6) [풀스택 Part2]
<html css js를 활용한 반응형 모던 웹페이지 만들기 3> 강의 영상 중 질문입니다.
<html css js를 활용한 반응형 모던 웹페이지 만들기 3> 강의 영상 중 질문입니다. const slidePreviewList = document.getElementsByClassName("slide-prev"); 로 상수를 선언하시고 그후 for문에서 for (let i = 0; i < slidePreviewList.length; i++) { let classList = slidePreviewList[i].parentElement.parentElement.nextElementSibling; let liList = classList.getElementsByTagName("li"); ...~} 여기서 slidePreviewList[i]는 어떤걸 지칭하는건가요? slidePreviewList[1]은 slide-prev라는 클래스 이름을 가지는 첫번재 요소를 가리키고 slidePreviewList[2]는 slide-prev라는 클레스 이름을 가지는 그다음 요소를 가리키는 방식인가요? 좋은강의 항상 감사합니다.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
테스트코드 회원가입 오류 질문
IllegalStateException 오류가 나는데,yml에 MVCC도 제거했고, h2도 켰는데도 그러네요@Autowired MemberService memberService;@Autowired MemberRepository memberRepository;여기에서 왜 빨간줄이 나는지 잘 모르겠습니다이상해서 MemberRepository와 MemberService도 pdf에서 복사해서 붙여넣어도 그렇습니다(@Service, @Repository 도 되어있습니다)Unit4로 했습니다!
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
Splash 액티비티 질문이예요.
다시 글 남겨요ㅜ 섹션 2. 트와이스 앱만들기 트와이스 앱 만들기 소개-강의소개 및 스플래시(Splash 화면) 4:35초에서 막혔습니다. <?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.example.twice" > <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Twice" tools:targetApi="31" > <activity android:name=".SplashActivity2" android:exported="false" > </activity> //여기서 부터 <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> //여기까지 어떠한 내용으로 고쳐야 하나요? <activity android:name=".MainActivity" android:exported="true" > </activity> </application></manifest> 가상 핸드폰으로 볼려고 하니 안나오고밑에 처럼 빨간색으로 에러 나오거든요. ㅠ 알려주세요. Android resource linking failed C:\Users\joshu\AndroidStudioProjects\Twice2\app\build\intermediates\packaged_manifests\debug\AndroidManifest.xml:28: error: unexpected element <intent-filter> found in <manifest><application>.
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
양방향 편의 메서드요 !
강의를 여러번 듣고 아무리 이해해 보려 해도 이해가 가질 않아서요 외래키를 설정하고 종속관계를 설정해서 -> DB에 저장이되도록 설정을 했는데 양방향 편의 메서드는 양방향 관계라서 쓴 거 까지는 이해가 가는데 결국은 1)DB에서 정보를 가져오고 정보를 뿌려주는데 왜 필요한지 이해가 가질 않습니다 사실상 주문이 들어오면 DB에서 회원에 대한 필터를 걸러서 보여주는 식이니까여.. 또, 양방향 관계에 있는 객체와, arraylist에 이제 정보를 넣는다고 치면 주문이 계속 들어와서 new order가 계속 생성 될텐데 이럴때도 이건 DB가 있는것도 아닌데 객체단에서 많은 2)정보가 계속 들어오면 어디에 저장되는 지도 이해가 안갑니다. 그러니까 데이터베이스 적으로 처리를 했는데 객체적으로 처리를 왜 해야 하는지 이해가 가질 않습니다....
-
미해결실전 JSP (renew ver.) - 신입 프로그래머를 위한 강좌
오라클 설치 오류...
오라클을 설치하는데 21c버전인데 계속 깔리다가 마지막에 안깔리고 오류가 뜨네요.. 어떻게 해결하죠.. 제발 도와주세요..
-
미해결[리뉴얼] 처음하는 MongoDB(몽고DB) 와 NoSQL(빅데이터) 데이터베이스 부트캠프 [입문부터 활용까지] (업데이트)
보안적인 문제에 관련하여 질문드립니다..!
혹시 보안적인 문제는 어떻게 해결해야할까요 ? 첫 데이터베이스 knowlege를 만들고 refresh all 버튼을 눌렀는데 갑자기 데이터베이스 해킹이 들어왔네요.. 비트코인을 요구하는데 필요없는 데이터베이스라 drop하고 다시 만들었는데 또 해킹당할까봐 불안하네요,, 해킹 데이터의 전문입니다. "all your data is a backed up. you must pay 0.04 btc to 18kq243qoqn97maqle1ealbxawz9pph31n 48 hours for recover it. after 48 hours expiration we will leaked and exposed all your data. in case of refusal to pay, we will contact the general data protection regulation, gdpr and notify them that you store user data in an open form and is not safe. under the rules of the law, you face a heavy fine or arrest and your base dump will be dropped from our server! you can buy bitcoin here, does not take much time to buy https://localbitcoins.com or https://buy.moonpay.io/ after paying write to me in the mail with your db ip: rambler+1oeec@onionmail.org and/or mariadb@mailnesia.com and you will receive a link to download your database dump."
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
401에러 쿠키에 connect.sid가 2개에요..
안녕하세요 제로초님 유트브와 인프런에서 강의 잘 보고있습니다. 다름 아니라 제로초님 강의를 참고하여 제 포트폴리오로 새롭게 만드는 중인데요! 지금 배포 후 401에러가 나와서 보니까 쿠키에 connect.sid가 2개가 들어가 있는데 어디가 문제인지 모르겠습니다. 참고로 도메인에 api를 넣었다가 틀린걸 알고 다시 제대로 수정했는데 api가 붙은 도메인이 계속 따라오네요.. 아래에는 백엔드 app.js 코드입니다. const express = require("express"); const cors = require("cors"); const session = require("express-session"); const passport = require("passport"); const cookieParser = require("cookie-parser"); const dotenv = require("dotenv"); const morgan = require("morgan"); const hpp = require("hpp"); const helmet = require("helmet"); const path = require("path"); const userRouter = require("./routes/user"); const postRouter = require("./routes/post"); const postsRouter = require("./routes/posts"); const stackRouter = require("./routes/stack"); const imageRouter = require("./routes/image"); const db = require("./models"); const passportConfig = require("./passport"); // ################################################################# // dotenv.config(); const app = express(); db.sequelize .sync() .then(() => { console.log("db 연결 성공"); }) .catch(console.error); passportConfig(); if (process.env.NODE_ENV === "production") { app.use(morgan("combined")); app.use(hpp()); app.use(helmet({ contentSecurityPolicy: false })); app.use( cors({ origin: "http://semifoli.site", credentials: true, }) ); } else { app.use(morgan("dev")); app.use( cors({ origin: true, credentials: true, }) ); } app.use("/", express.static(path.join(__dirname, "uploads"))); app.use(express.json()); // 프론트에서 data를 json으로 보냈을때 req.body 안에 넣어줌 app.use(express.urlencoded({ extended: true })); // 프론트에서 form(form 은 url)으로 data를 보냇을때 req.body 안에 넣어줌 app.use(cookieParser(process.env.COOKIE_SECRET)); app.use( session({ saveUninitialized: false, resave: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly: true, secure: false, domain: ".semifoli.site", // domain: process.env.NODE_ENV === "production" && ".semifoli.site", }, }) ); app.use(passport.initialize()); app.use(passport.session()); app.get("/", (req, res) => { res.send("hello express"); }); app.use("/posts", postsRouter); app.use("/post", postRouter); app.use("/user", userRouter); app.use("/stack", stackRouter); app.use("/image", imageRouter); // app.use("/stacks", stacskRouter); app.listen(80, () => { console.log("서버 실행 중!"); });
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
상품 수정이 안되는데 무슨 문제일까요?
package hello.itemservice.domain.item;import lombok.Data;import java.util.List;@Datapublic class Item { private Long id; private String itemName; private Integer price; private Integer quantity; private Boolean open; private List<String> regions; private ItemType itemType; private String deliveryCode; public Item(){ } public Item(String itemName, Integer price, Integer quantity) { this.itemName = itemName; this.price = price; this.quantity = quantity; }} 에러문구입니다. Caused by: org.springframework.beans.NotReadablePropertyException: Invalid property 'Name' of bean class [hello.itemservice.domain.item.Item]: Bean property 'Name' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter? 계속 머리싸매고 생각해봐도 왜 안되는지 잘 모르겠네요 답변부탁드려요 ㅠ
-
미해결실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발
physical-starategy 에 질문
만약에 전략을 바꾸고 싶으면 physical-starategy 을 쓰라고 하셨는데 어떻게 쓴다는 말인가요?? 기존 yml 파일에서 spring: jpa: ... physical-starategy 이런식으로 바꾸라는 말씀이신거죠?
-
미해결홍정모의 따라하며 배우는 C++
[1:00] 생성자의 매개변수 문의
너무 간단한 것인데 혹시나 싶어 문의드립니다. 지금까지 공부한 개념으로 보면 생성자의 매개변수는 Animal(const std::string& name) 이어야 할거 같은데 Animal(std::string name) 으로 한 이유가 따로 있나요? 복사를 하기보단 참조가 더 효율도 좋은데 단순히 강의를 위해 쓸데없는 내용을 빼기위해 적으신건지 궁금해서 문의드립니다.