static
폰을 끄더라도 dram,sram으로 인하여.. 즉 static메모리가 존재하여 데이터를 유지한다.
즉 static메모리는 파워가 없어도 데이터를 유지한다.
static variable – 자기가 정의된 함수밖에서도 메모리가 유지된다. 일반적인 변수나 함수는 함수 안에서만 유지가 된다.
static function
프로그램이 loading할 때 global 공간에서 생성이되고 실행중에는 만들어지지 않는다
즉 static int nA=3; 을하면 global공간에 만들어지고 앞이 sheild가 쳐져서 보이지 않게된다.
#include "stdafx.h"
#include
using namespace std;
void ShowStaticVariableExample();
int main()
{
ShowStaticVariableExample();
ShowStaticVariableExample();
return 0;
}
//nA는 사용할때마다 죽어서 초기화되면 살아있던게 죽고 다시생김
void ShowStaticVariableExample()
{
static int nA = 3;
nA = nA + 1;
cout << nA << endl;
}
static member variable 은 program이 loading 할 때 공간이 잡힌다. 즉 객체 생성시에는 더 이상 공간이 잡히지 않는다.
매개변수로 포인터를 받고, 이를 배열에 넣기 위해서는 바로는 방법이없다.
이유는 포인터=배열이름을 통하여 포인터의 정의는 가능하지만
배열이름=포인터를 통하여 배열이름으로 다른 포인터로 재정의는 불가능하다.
따라서 set함수를 통하여 배열[]=포인터[] 꼴로 해준다.
CTheater::CTheater(string strName, int nTriptime, int* pnShowtime)
{
m_strName = strName;
m_nTripTime = nTriptime;
SetShowTime(pnShowtime, 10);
} static을 이러한 방식으로 사용한다면 오류가 뜬다.
즉 CTheater가 static변수를 사용하기 위해서는 .cpp나 함수위에
int CTheater::m_nTheater = 0;
이것을 위에 써준다. CTheater 이라는 클래스의 static변수를 0으로 초기화 한다는 의미이다.
그냥 static 변수를 함수에서 사용하기 위해서는 함수 위에 static 메모리를 미리 선언 및 초기화를 해준다고 생각하자.
함수를 사용할 때에는 헤더파일에서 맨앞에 static을 붙여주고 이를 정의하는 부분은 그냥 쓴다. 그리고 사용할 때 클래스명::함수명() 이렇게 사용하여 함수가 클래스변수에 포함되는 것이 아닌 그냥 사용 가능하도록 한다.
그것이 static의 방식이다. 어차피 static은 포함되는 것이 아니라 그냥 사용한다 하더라도 그값이 유지가 되어 버리기 때문에 동일하게 된다.
vector
array는 한번정한 크기를 바꿀 수 없다.
vector는 크기를 가변적으로 바꿀 수 있다.
array는
int pA[10]; int *pnA; pnA=new int[10];
vector는 크기가 가변적인다.
array가 커지기도 하고 작아지기도 한다.
vecter
데이터를 넣을 때에는 v.push_back이라는 함수를 넣는다. 최초로 넣을때에는 push back을 한다.
벡터는 stl-templet 형태의 library 이다.
templet
하나의 틀을 만들어 두고 그틀로 클래스를 만든다.
각각의 type를 넣으면 컴파일러가 그 type을 넣어 코딩을 해준다.
int vertor, double vector을 만드는데 templet을 만들면 int를 쓰면 컴파일러가 자동 generation 해준다.
'언어 > CPP(cpp)' 카테고리의 다른 글
github_cpp (0) | 2017.12.26 |
---|---|
char string (0) | 2017.12.25 |
클래스 생성자 (0) | 2017.12.25 |
sort,structure(구조체) (0) | 2017.12.25 |
array(배열) (0) | 2017.12.25 |