'Class'에 해당되는 글 1건

3장정리

C++프로그래밍/C++ 2007. 7. 13. 21:36

1. class
class란 C의 구조체에 멤버로 함수를 넣은것?(이렇게 설명해도 될려나)
멤버로 멤버변수 및 멤버 함수를 갖는것..class

#include <iostream>

using std::cout;
using std::endl;

struct Account{
 char accID[20];
 char secID[20];
 char name[20];
 int balance;
};

void Deposit(Account &acc,int money)
{
 acc.balance+=money;
}
void Withdraw(Account &acc,int money)
{
 acc.balance-=money;
}


이렇게 되어있는 C스타일의 구조체와 함수를 하나로 묶어줄수 있다..무엇으로? class로

struct Account{
 char accID[20];
 char secID[20];
 char name[20];
 int balance;

 void Deposit(int money)
 {
  balance+=money;
 }
 void Withdraw(int money)
 {
  balance-=money;
 }
};


아직은 class가 아니다..C++에서 지원하는 구조체의 형태이다.
C++에서는 구조체 안에 함수가 존재할수 있도록 허락해준다..좋은놈..
자 드디어 우리의 class등장!!

class Account{
public:
 char accID[20];
 char secID[20];
 char name[20];
 int balance;

 void Deposit(int money)
 {
  balance+=money;               // balance는 class내의 변수를 참조한다.(내부접근)
 }
 void Withdraw(int money)
 {
  balance-=money;
 }
};


class다..구조체와 다른게 없다고 생각되는가?..
선언만 struct --->class로 해줬고..public하나 해줬고..
그게 차이다. 구조체는 기본값이 public이다. 즉 외부접근이 허용이된다.
그러나 class는 기본값이 private이다..저렇게 위처럼 public를 허용해 주지 않으면
내부접근만 가능하고..기본적으로는 private이기때문에 외부접근이 불가능하다.
그리고class는 더이상 변수라는 표현을 쓰지 않고 "객체"라는 표현을 쓴다..

멤버함수의 외부정의
위에처럼 정의를 하면 class의 가독성이 현저하게 떨어지므로 함수의 선언만 하고
정의는 외부에다가 할수가 있는데 그때 사용하는 것이  범위지정연산자(::)이다.

class Account{
public:
 char accID[20];
 char secID[20];
 char name[20];
 int balance;

 void Deposit(int money);
 void Withdraw(int money);
 };

void Account::Deposit(int money)
 {
  balance+=money;
 }
 void Account::Withdraw(int money)
 {
  balance-=money;
 }



짜잔~~어떤가 class의 가독성이 좀더 화사해지지 않았나?
음..좋아 ㅋㅋ

class의 멤버 함수를 내부에 정의한다는것은 함수를 inline화 시킨다는 의미가 있는데
저딴식으로 함수선언만 내부에 놓고 정의는 외부로 보내면 어떻게 하지?
간단하다..외부함수선언 앞에 inline 키워드만 붙여라..그럼 끝..
더불어 C++컴파일러는 똑똑해서 저렇게 inline을 선언해도 알아서 판단해서
알아서 프로그램 돌린다..자세한건 빌게이츠에게로..
블로그 이미지

百見 이 不如一打 요 , 百打 가 不如一作 이다.

,