C++ Class 질문

C++ Class 질문

작성일 2023.01.05댓글 2건
    게시물 수정 , 삭제는 로그인 필요


'
1.Text라는 클래스가 있고 위 1번에서 Text(t)는 기본생성자가 없어서 저렇게 써줘야 한다고 들었습니다.
기본생성자가 없어서 저렇게 써준다는데  Text(t) 는 이름없는 변수를 만들어 주는거라 Argument t가 들어가서 기본생성자랑 관계가 없지 않나요?? 아니면 Text의 private 의 변수를 초기화 해주는것인가요??

2.저 초기화해주는 형식이 괄호안에 들어가도 된다고 하는데 들어간다면 무슨형식인지 모르겠습니다
ex) 
class A {
int x;
int y;
public:
A(const std::string &p ){
x(p);}
이렇게 되서 잘못된 형식아닌가요??


#c++ class #c++ class 생성자 #c++ class 선언 #c++ class 상속 #c++ class this #c++ class private public #c++ class 사용법 #c++ class struct 차이 #c++ class template #c++ class 초기화

profile_image 익명 작성일 -

일단 Text(t)와 left_bracket(left)는 같은 위치, 같은 형태를 띠고 있지만

목적이 다릅니다.

생성자 옆에 : 이 나오고 멤버변수(값) 이런 형태는

intializer list라고 부릅니다 (std::intializer_list와 다름)

https://en.cppreference.com/w/cpp/language/constructor

저렇게 멤버를 초기화 하게 되면

괄호 안에 들어가는

this->left_bracket = left;

와는 차이가 있는데,

초기화 리스트를 쓰면 해당 멤버의 생성자를 바로 객체 메모리를 대상으로 호출하게 됩니다.

그게 아니면 다른 데 임시로 객체를 생성한 후 다시 멤버 변수로 복사를 하기 때문에 초기화 리스트를 쓰는 것이 성능 상의 이점이 있을 수 있다고 하네요.

반면 Text(t)는 멤버를 초기화 하는 것이 아니라, 부모 클래스의 생성자를 호출하는 목적입니다.

profile_image 익명 작성일 -

1. Text(t)는 Base class의 생성자를 불러오는 것으로 보입니다. Text class의 생성자를 주목해주세요. 그리고 매개변수 t는 const 참조형으로 별개의 이름없는 변수가 만들어지지는 않습니다. FancyText 클래스의 생성자를 보면 파라미터 4개의 값이 각각 t는 Text 클래스의 생성자를 불러오고, 나머지 인자들은 각각의 멤버 변수를 초기화해주는 것으로 볼 수 있습니다. private든 public이든요.

2. 초기화 해주는 형식으로는

class Base{

private:

int x, int y;

public:{

Base(int x, int y): x(x), y(y){}

// Base(int x, int y) {this->x = x; this-> y =y;}와 같은 표현!

};

구글에 초기화 리스트에 대해 검색하고 공부해 보시길 바랍니다.

궁금한점이 있다면 https://open.kakao.com/o/sRyfR1Ve 추가 질문해주세요!!

c++ class 질문입니다.

예를 들어 class Move{ private: int x; int y; public: Move add(const Move & m); } 이런식으로 class가 있으면 함수의 리턴값과 매개변수가 class인...

c++ class 질문이요

c++class를사용해서 은행관리프로그램을만드는건데요ㅠ 계좌번호 이름 나이 등록하고 돈 입출금 가능하게하는 소스좀...

C++ class 질문입니다!!

안녕하세요 c++ class 코드에대해 질문드립니다 ㅠㅠ 아래 메인함수와 제약조건 코드를 이용하여 int main() { School pnu("PNU...

c++ class 질문

... C++에서는 모든 것이 객체로 표현되죠.. 이것은 변수든, Class든 모두 동일시 생각되어 집니다. 그럼 뭐가 문제일까요? a, b의 초기화는 어떻게...

C++ Class 질문

... ex) class A { int x; int y; public: A(const std::string &p ){ x(p);} } 이렇게 되서 잘못된... 궁금한점이 있다면 https://open.kakao.com/o/sRyfR1Ve 추가 질문해주세요!!

c++ class 질문

... class MyDate { private: int num1, num2, num3; public: MyDate(int num1, int... class MyDate { private: int num1, num2, num3; public: MyDate(int num1, int num2...

c++ class 질문입니다.

... c++ 초보 입문자입니다. 많은 도움 부탁드립니다. 풀어주신다면 큰절 한번 올리겠습니다. #include <iostream> using namespace std; class...

c++ Class 질문이요!

C++ #include <iostream> #include <cstring> using namespace std; class Namecard{ private: string name,company,phone,level; public: Namecard(char a=0,char b=0,char c...

c++ class 질문

안녕하세요 class function 만드는것에 대해 질문 있습니다. class { private: const static int MAX = 30; bool isSorted; Fraction List[MAX]; size_t num...