C 언어 개열/C++

C++ 객체지향 기초

본클라쓰 2010. 8. 22. 20:01

 

C에서 C++로 넘어갈 때 가장 중요한 역할을 한 것이 구조체이다. C언어의 구조체는 관련 있는 데이터를 하나의 자료형으로 묶을수 있다. 따라서, 함께 움직이는 데이터들을 묶어주는 효과를 가짐으로써 프로그램의 구현 및 관리가 용이해진다.

 

 

▲ C언어의 구조체

struct Person {
    int age;
    char name[10];
}

 

int main() {

    struct Person p;
    return 0;
}

 

 

 

■ C언어의 구조체에 대한 불만

 

C언어의 구조체는 사용자 정의 자료형이다. C에서는 사용자 정의 자료형을 기본 자료형으로 인식해 주지 않는다. 따라서, C언어에서는 사용자 정의 자료형 앞에 struct 키워드를 반드시 붙여야 했다.  

 

▲ C++에서의 구조체

#include <iostream>

 

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

 

struct Person {
    int age;
    char name[10];
};

 

int main() {

    Person p = {10, "홍길동"};
    cout << "나이 : " << p.age << ", 이름 :" << p.name << endl;
    return 0;
}

 

 

위의 예제처럼 C++에서는 사용자 정의 자료형과 기본 자료형을 구분하지 않는다.

 

 

C언어와 C++언어의 구조체 사용의 차이점

C언어  struct Person p;
C++ 언어  Person p;

 

 

■ 함수를 넣으면 좋은 구조체

 

프로그램은 데이터와 데이터를 조작하는 함수로 구성되어 있다. 잘 구성된 프로그램은 데이터와 더불어 함수들도 하나의 부류를 형성한다. 하지만 C언어의 구조체는 함수를 포함할 수 없다.

 

▲ C언어의 구조체를 접근하는 함수

 

struct Person {
    int age;
    char name[10];
    int money;
};

 

void plus(Person &person, int money) {
    person.money += money;
}

 

void minus(Person &person, int money) {
    person.money -= money;
}

 

 

하지만, C++에서는 구조체 안에 함수를 포함시킬 수 있다.

 

#include <iostream>

 

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

 

struct Person {
    int age;
    char name[10];
    int money;

 

    void plus(Person &person, int money) {
        person.money += money;
    }

 

    void minus(Person &person, int money) {
        person.money -= money;
    }

 

};

 

정말 쉽게 설명하면 클래스란 구조체에 함수를 포함시키는 것이다. 클래스는 속성(데이터)와 메소드(데이터 처리 방법)을 가지는 완전한 객체를 표현하는 방법이다.