티스토리 뷰

□소멸자

-객체가 소멸되는 시점에서 자동으로 호출되는 함수

 

※특징

객체가 사라질 때 마무리 작업을 위함.

소멸자 함수의 이름은 클래스 이름 앞에 ~를 붙인다.

리턴형X

중복 불가능함.

선언하지 않으면 자동으로 기본 소멸자 생성

class Circle{
...
Circle();
Circle(itn r);
...
~Circle();  //소멸자 선언
};

Circle::~Circle(){  //소멸자 함수 구현
....
}

□생성자/소멸자 실행 순서

지역 객체 - 함수 내에 선언되고, 함수가 종료되면 소멸

전역 객체 - 함수 바깥에 선언되고, 프로그램이 종료되면 소멸

 

객체 생성 순서

지역 객체 - 함수가 호출되는 순간에 순서대로 생성

전역 객체 - 프로그램에 선언된 순서대로 생성

 

객체 소멸 순서

지역 객체 - 함수가 종료하면, 지역 객체가 생성된 순서의 역순으로 소멸

전역 객체 - 프로그램이 종료하면, 전역 객체가 생성된 순서의 역순으로 소멸

 

#include<iostream>
using namespace std;

class Circle{
public:
	int radius;
	Circle();
	Circle(int r);
	~Circle();
};

Circle::Circle(){
	radius = 1;
	cout << "반지름 " << radius <<" 원 생성" <<endl; 
}

Circle::Circle(int r){
	radius = r;
	cout << "반지름 " << radius <<" 원 생성" <<endl; 
}

Circle globalDN(1000);
Circle globalPZ(2000);

int main(){
	Circle mainDN;
    Circle mainPZ(20);
}

반지름 1000 원 생성
반지름 2000 원 생성
반지름 1 원 생성
반지름 20 원 생성
반지름 20 원 소멸  //소멸자 순서 주의
반지름 1 원 소멸
반지름 2000 원 소멸
반지름 1000 원 소멸  

 

□접근 지정자

private

동일한 클래스의 멤버 함수에만 제한함. 디폴트 접근 지정자

public

모든 다른 클래스에 허용.

protected

클래스 자신과 상속받은 자식 클래스에만 허용

 

□오버헤드

함수 호출에 따른 시간 오버헤드

프로그램이 함수를 호출하면

바로 함수의 코드를 따라가는게 아니라

위 그림의 과정을 거친 후 코드를 따라가게 된다.

 

따라서 크기가 작은 함수를 호출하면

위 과정이 코드를 따라가는 과정보다 길어져 

오버헤드가 발생한다.

 

□인라인 함수

-inline키워드로 선언된 함수

인라인 함수를 호출하는 곳에 인라인 함수 코드를 확장 삽입.

 

인라인 키워드가 붙은 함수를 호출하면

함수의 코드를 삽입해 실행.

 

□자동 인라인 함수

클래스 선언부에 선언된 함수에 직접 구현을 해주면

inline 키워드를 쓰지않아도 자동으로 인라인으로 구분된다.

class Circle{
private:
	int radius;
public:
	Circle(){   //자동 인라인 함수
    	radius = 1;
    }
    Circle(int r);    
    double getArea(){  //자동 인라인 함수
    	return 3.14*radius*radius; 
    }
};

 

□구조체

상속,멤버,접근 지정 등 모든 것이 클래스와 동일

단, 디폴드 접근 지정이 다름

구조체 - public

클래스 - private

단지 C와 호환을 할 때만 사용

 

객체 생성 시

struct structName stObj; //C의 구조체 객체 생성

structName stObj; //C++의 구조체 객체 생성

구조체 선언

 

#include <iostream>
using namespace std;

struct StructCircle{  //구조체 선언
private:
	int radius;
public:
	StructCircle(int r){radius = r;} //구조체의 생성자
};

int main(){
	StructCircle waffle(3); //객체 생성
}

'c++' 카테고리의 다른 글

C++ this,string 객체,string 배열  (0) 2020.07.06
C++ 객체포인터,객체 배열, 동적 할당  (0) 2020.07.03
C++ 클래스와 객체,생성자  (0) 2020.07.01
C++ main함수,C++ 입력,출력(cout,cin,getline)  (0) 2020.07.01
c++언어의 특징  (0) 2020.07.01
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함