1. 생성자
class Complex {
public:
Complex() { // 기본 생성자
}
};
class Complex {
public:
Complex(double re, double im) { // 매개변수가 있는 생성자
}
};
class Complex {
public:
Complex(const Complex& rhs) {
// 복사 생성자
}
};
class Complex {
public:
Complex& operator=(const Complex& rhs) {
// 복사 할당 연산자
if (this != &rhs) {
// 자기 자신과의 할당을 방지
}
return *this;
}
};
Call by Reference(&)
가 아닌 Call by value
일때 복사 생성자를 호출하면,외부에서 객체를 복사 생성
-> 복사생성자 호출
-> 매개변수를 값으로 전달받을 경우 호출하는 쪽으로부터 매개변수가 복사 생성
-> 복사생성자 호출
-> 무한 반복....
2. 얕은 복사 & 깊은 복사
깊은 복사 (Deep Copy) :
얕은 복사 (Shallow Copy) :
Complex c4 = c3, c4=c3의 차이 :
c3
를 사용하여 객체 c4
를 초기화하는 과정으로 생성자 또는 복사 생성자를 호출하여,c4
를 c3
와 동일한 값으로 초기화시키며 복사 초기화
또는 객체 초기화
라고 한다Complex c4 = c3; // 복사 초기화
c3
와 c4
는 별도의 독립적인 객체므로 변경이나 수정은 각 객체에 영향을 주지 않는다
c4 = c3 :
이미 생성된 객체 c4
에 객체 c3
의 값을 할당 -> 할당 연산
이라고 한다
c4 = c3; // 할당 연산
c3
의 값이 c4
에 복사되는 것을 의미하고 변경하면 한 객체가 다른 객체에 영향을 미칠 수 있다
3. 함수중복
class Complex{
public:
Complex()
Complex(double re)
complex(double re,double im)
// 함수 이름을 같게 하되 입력 받는 매개변수를 다르게 함으로 써, 함수를 정의
4. 디폴트 인수 ( Default Argument )
Complex()
,Complex(double re)
, Complex(double re,double im)
-> Complex(double re = 0.0 , double im = 0.0)
로 대체 가능
friend
friend
는 클래스의 멤버 함수가 다른 클래스의 비-멤버 함수를 호출하도록 허용하는 기능을
->friend
함수는 클래스의 private
또는 protected
멤버에 접근할 수 있도록 허용
두 클래스 간의 밀접한 관계: 두 클래스가 서로 밀접하게 관련되어 있으며 한 클래스가 다른 클래스의 비공개 멤버에 접근해야 하는 경우 friend
키워드를 사용
연산자 오버로딩: 연산자 오버로딩 함수 중에서 두 개 이상의 클래스의 비공개 멤버에 접근해야 하는 경우에 friend
키워드를 사용
friend
함수를 정의할 때에는 해당 함수가 어떤 클래스의 friend
인지를 지정해야 합니다. friend
함수는 클래스의 정의 내부 또는 외부에서 정의할 수 있으며, 함수 정의에서 friend
키워드를 사용하여 해당 클래스를 선언합니다.
class String{
friend std::ostream& operator<< (std::ostream& out, const String& rhs);
private:
}
+) 마주한 Error