728x90

포큐아카데미 c++3200강의 내용을 개인학습용으로 정리한 내용입니다.

 

복사생성자

c,java(대신 클론함수 생성해서 구현하긴 한다)에는 없다

Vector(const Vector& other);

다른 개체를 이용하여 새로운 개체를 초기화

암시적 복사 생성자(얕은 복사) 기본 복사 생성자는 없으면 알아서 만들어준다.

 

얕은복사 , 깊은복사 String(const String& str)

클래스에 포인터형 변수가 있으면? 얕은 복사의 경우 문제가 된다. (데이터 공유로 인한.. 데이터 수정 데이터 삭제등)

이럴경우 직접 깊은복사 생성자를 구현해야한다.

 

연산자 오버로딩

 

friend 키워드

클래스나 함수시그니처에 지정 가능

다른 클래스나 함수가 나의 prviate 또는 protected멤버에 접근할 수 있게 허용

(약간 oop 안티패턴  friend를 남발하면 문제가될듯..)

자바는 유사하게 접근지정자를 지정안하면 한 package안에서 서로 클래스간에 접근가능하게 한다.

 

연산자 오버로딩과 const

기본적으로 매개변수 메소드에 전부 const를 붙이고 작업하는게 좋다. 컴파일시 문제가 될때 const를 제거하는 식으로

 

연사자 오버로딩 남용하지말것

모든 자유로운것에는 실수의 여지를 준다. 조심히 사용해야함.

차라리 함수를 만들어라.

 

대입연산자

대입연산자도 복사 생성자와 비슷역할을 하나 생성, 소멸되는 과정 처리가 안되어 있음

복사 생성자를 구현하면 대입연산자도 구현해야할 수 있음. 

대입연산자도 기본으로 생성된다.

 

암시적 함수들을 제거할 수 있다

기본함수들 생성자, 복사생성자, 소멸자,대입연산자

private 영역안에 선언해 놓는다. (전통적인 방식)

 

 

 

 

728x90

+ Recent posts