20141006 (C++ struct, class)

152 일차







---------------

C++

---------------




------- struct


C++에서 구조체에 기능이 추가되었다.

- 구조체 선언시 struct 생략 가능

- 구조체 내에 함수 선언 가능



--- 구조체 선언시 struct 생략 가능


예제)

#include <iostream>


using namespace std;


struct smart

{

int iNum;

};


int main()

{

struct smart a;

a.iNum = 1;


cout << a.iNum << endl;


smart b;     // struct 생략 가능

b.iNum = 2;


cout << b.iNum << endl;


b.test();


return 0;

}






--- 구조체 내에 함수 선언 가능


예제)

#include <iostream>


using namespace std;


struct smart

{

int iNum;


void test()

{

cout << " test 함수 호출" << endl;

};

};


int main()

{

struct smart a;

a.iNum = 1;


a.test();    // 구조체 내에 함수 호출


return 0;

}






추가된 예제)

#include <iostream>


using namespace std;


void test()    // 전역? test 함수 선언

{

cout << "전역 test 함수" << endl;

}


struct smart

{

int iNum;


void test();    // 구조체 test 함수 선언

};


int iNum = 100;    // 전역 변수 iNum


void smart::test()    // 구조체 test 함수 정의.    이런식으로 전역에서 정의 가능.

{

int iNum = 50;


cout << ::iNum << smart::iNum << iNum << " test 함수 호출" << endl;

//                전역변수    구조체변수     지역변수

// 우선순위 :  전역변수 < 구조체변수 < 지역변수

::test();    // 전역 test 함수 호출

};


int main()

{

struct smart a;

a.iNum = 1;


cout << a.iNum << endl;


smart b;

b.iNum = 2;


cout << b.iNum << endl;


b.test();

a.test();


return 0;

}


결과










--- class & struct




구조체 선언부에서 struct 를 class로만 바꾸면 바로 클래스가 구현된 것이다.

struct + @ = class       (@ 에는 접근 속성, 상속 등등이 있다)


예제)

#include <iostream>


using namespace std;


//struct smart

class smart

{

public:    //  접근 속성으로 접근 제어 지시자라 불림

char caName[7];


void In();

void Out();

};


void smart::In()

{

cout << "이름을 입력하세요 : ";

cin >> caName;

}


void smart::Out()

{

cout << "나의 이름은 " << caName << " 입니다." << endl;

}


int main()

{

smart A;

smart B;


A.In();

B.In();


A.Out();

B.Out();


return 0;

}







--- 접근 제어 지시자는 3가지로

- public

- private

- protected

가 있다.


기본적으로 생략 시 private가 걸린다.


- public : 모두 접근 가능

- private : 클래스내에서만 접근 가능

- protected : 상속된 클래스에서 접근 가능 (상속은 추후에...)



예제)

#include <iostream>


using namespace std;


//struct smart

class smart

{

private:    // 외부 접근 불가능

char caName[7];


public:    // 아무나 사용 가능

void In();

void Out();

};


void smart::In()

{

cout << "이름을 입력하세요 : ";

cin >> caName;

}


void smart::Out()

{

cout << "나의 이름은 " << caName << " 입니다." << endl;

}


int main()

{

smart A;

smart B;


A.In();

B.In();


A.Out();

B.Out();


// B.caName[0] = 'a';    // error 접근 불가


return 0;

}














설정

트랙백

댓글