티스토리 툴바

블로그 이미지

구름세상

더러운 필터링 ******* by 별구름


생성자와 소멸자

#include <iostream>
using namespace std;
class mec
{
public:

//  mec(int); // 인자가 있는 생성자
  mec(int&); // 복사 생성자
//  mec();
 
  //  default 생성자
  ~mec();


private:
  int iNum; // 클래스 안에서만 사용가능함, 외부에서 접근 불가능
  static int icnt;
};

int mec::icnt = 0;

mec::mec(int &iTemp)
{
  icnt++;
  iNum = iTemp;
  cout << "생성자 : " << iNum << endl;
  cout << "객체수 : " << icnt << endl;
}

mec::~mec()
{
  cout << "소멸자 : "<< iNum << endl;
}

int main()
{
  int k = 1,s=2,j=3,i=4;
  mec A(k),B(s),C(j),d(i);

  return 0;
}
Comment 0 Trackback 0

Trackback : http://scloud82.tistory.com/trackback/18 관련글 쓰기

Top

형변환

묵시적 형 변환 : 산술연산의 경우 int + float와 같이 두 피연산자의 자료형이 다를 때

시스템이 자동적으로 int형은 float형으로 변환시킨 다음, 덧셈 연산을 수행한다.

컴파일러가 자동으로 처리를 해준다.

(상향 캐스트, 하향 캐스트 둘다 가능)

2)명시적 형 변환 : 심블테이블 형성후 좌형 기준으로 우측 형이 다를 때 프로그래머가

강제적으로 형을 맞춰주는 변환이다.

하향캐스트 : 자료의 손실이 일어나므로 조심하여야한다.

3)시험

int A = 200;

int * B = &A;

char * C = (char *)&A; (주소 형 4byte)

char D = *C; (캐릭터 형 1byte)

0

메모리 구조

심블테이블

200

D(491)

type

이름

주소

500

C(492)

int

A

500

500

B(496)

int *

B

496

200

A(500)

char *

C

492

ffffffff

char

D

491

1) * iPoint = &iNum1; 일 때 좌, 우를 나누어서 생각한다.

iNum1의 주소를 iPoint에 저장되어 있는 주소에다가 넣는다.

(주소와 값은 형이 틀리지만 같은 정수형이라 컴파일 된다.)

2) iAge[0], *iAge, *(iAge+0)의 값들은 다 동일하다.

3) 배열의 강점은 for문을 사용 할 수 있다.

4) 처음 변수 밑으로 2칸에는 return address 가 있다

return address에는 다른 수를 넣게 되면 Linux 자체에서 꺼버린다

Comment 0 Trackback 0

Trackback : http://scloud82.tistory.com/trackback/17 관련글 쓰기

Top

캐스팅 연산

1)캐스팅연산 => 형을 동등하게 맞춰주는 연산.(기준은 항상 왼쪽이다.)

2)캐스팅 연산에서 char형이 int형으로 변환될 때.

1byte를 4byte에 넣는 것이 아니라 4byte로 늘인 후 확장한 뒤 나머지 3칸을

쓰지 않는 상태로 만들고 1byte를 대입시킨다.(모든 일은 cpu에서 일어난다.)

3)배열의 주소를 불러오면 배열 시작주소를 불러오고 이를 통해 배열의 이름은

상수이지만 배열 이름만의 주소는 없음을 알 수 있다.

4)포인터 변수는 먼저 값을 가지고 온 뒤 배열주소를 해석 한다

포인터는 배열을 나타내며 아래의 *iPoint 주소와 iPoint[0]의 주소는 동일하다.

(포인터는 변수로 포인터 변수의 주소는 존재한다.)

int Num = 3;

int * iPoint = &Num;

{ *iPoint = 9 } = { ipoint[0] = 9 }

1)const변수 = 상수를 나타낸다.

자료가 저장 혹은 변환되는 것을 막아주며 고정시켜 준다

int const Num = 3; <= 변하지 않는다.

2) 가.caAl[iCnt] = 'a' + iCnt

나.((배열)주소)[iCnt] = 'a' + iCnt

다.ucPoint[iCnt] = 'a' + iCnt

라.*(CaAl+iCnt) = 'a' + iCnt

마.*(ucPoint +iCnt) = 'a' + iCnt

(모두 같은 의미이다.)

Comment 0 Trackback 0

Trackback : http://scloud82.tistory.com/trackback/16 관련글 쓰기

Top

prev 1 2 3 4 5 ... 6 next