TIL - 2021.1.18

Wanna be __·2021년 1월 18일
0

TIL

목록 보기
3/45
post-thumbnail

Today, I Leared

1. C++ 복사생성자 구조, 사용방법, 예시
포인터를 멤버변수로 가지고 있는 경우에 대한 Deep Copy를 통한 명시적인 새로운 객체 선언

CMydata(const CMydata &rhs)
: // Initialization Block
{
}

2. C++ 대입연산자 구조, 사용방법, 예시
a = b는 기본적으로 shallow copy가 이루어 지기 때문에, deep copy를 명시적으로 선언해주기 위함.

CMyType& operator=(const CMyData &rhs)
{
}

// 생성자와는 다른, 연산자임을 잊지말자!

3. 묵시적 변환과, 허용되는 변환

  • 묵시적 변환 - 매개변수가 한개인 "변환 생성자"가 암묵적으로 호출되는 것 = 컴파일러가 알아서 임시객체를 생성한 후 임시 객체에 대한 참조가 전해지는 형식.. explicit으로 차단가능

  • 허용되는 변환 - 형변환 연산자를 사용하여 Class를 다른 자료형으로 변환 가능 (Java의 toString을 통해 호출하는 것과 유사한 느낌)

operator int(void)
{
return m_nData;
}

4. 이름 없는 임시 객체
연산 과정 혹은 함수의 반환이 특정 Class형인 경우 생김.
a = 3 + 5; 라고 선언했을때만 해도, 3+5 계산이 먼저 이루어진 뒤, 8의 값을 가진 상수형 인스턴스가 생성되고, a에 그 값이 복사되고 나서, 소멸된다. 간단한 연산의 경우 큰 overhead를 만들지 않겠지만, 어떤 대상을 연산하는지에 따라 메모리 활용 및 성능에 중요한 역할을 할 수 있다.

5. R-value
R-value는 상수형에 대한 참조다!

매개변수 형식실인수 예비고
TestFunc(int)int x= 3;
TestFunc(x);
TestFunc(3);
TestFunc(3+4);
TestFunc(int&)int x = 3;
TestFunc(X);
TestFunc(int&&)int x = 3;TestFunc(x)불가능!
TestFunc(3);
TestFunc(3+4);
TestFunc(x+4);

Today, I Did

  1. 두달간의 운동 휴식기를 끝내고 오랜만에 운동을 했다.
    예전 만큼의 중량을 회복하는데만 한달의 시간이 걸릴 것 같은데, 아침운동으로 꾸준히 하루를 시작해야겠다!
profile
성장하는 개발자

0개의 댓글