MY MEMO

[C] 개념 다지기 - struct, Overloading 본문

STUDYING/C

[C] 개념 다지기 - struct, Overloading

l_j_yeon 2017. 10. 1. 12:21

+)

Overloading, Overriding 차이?

Overloading : 같은 이름의 method를 사용하는 것

Overriding : 상속 후 부모의 method를 변경하는 것


Overriding의 예시

출처 : http://itpangpang.xyz/105


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <stdio.h>
#include <stdlib.h> //malloc 정의
 
typedef struct {
    char*brand;
    int model;
}vehicle;
 
struct temp {
    int x;
    int y;
};
 
//함수의 overloading 허용되지 않음
//모든 함수의 이름이 달라야함
 
void show_point(int x, int y)
{
    printf("1 : %d %d \n", x, y);
}
 
void show_point_temp(struct temp p1)
{
    printf("2 : %d %d \n", p1.x, p1.y);
}
 
void show_point_pointer_temp(struct temp *p1)
{
    printf("3 : %d %d \n", p1->x, p1->y);
}
 
int main()
{
    vehicle mycar;
    mycar.brand = "Ford";
    mycar.model = 2007;
 
        struct temp *p1 = malloc(sizeof(struct temp));
    p1->x = 10;
    p1->y = 10;
 
    struct temp p2;
    p2.x = 20;
    p2.y = 20;
 
    show_point(10, 10);
 
    show_point_temp(*p1);
    show_point_temp(p2);
 
    show_point_pointer_temp(p1);
    show_point_pointer_temp(&p2);
     
    return 0;
}


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
 
typedef struct
{
    char*name;
    int age;
}person;
 
int main()
{
    person *myperson = malloc(sizeof(person));
    myperson->name = "jae yeon";
    myperson->age = 24;
 
    printf("myperson -> name : %s \n", myperson->name);
    printf("myperson -> age : %d\n", myperson->age);
     
    //할당된 메모리 해제
    free(myperson);
 
    //해제했기 때문에 아래의 printf는 오류
    printf("myperson -> name : %s \n", myperson->name);
    printf("myperson -> age : %d \n", myperson->age);
 
    return 0;
}


'STUDYING > C' 카테고리의 다른 글

[C] 개념 다지기 - Union  (0) 2017.10.01
[C] 개념 다지기 - linked list  (0) 2017.10.01
[C] 기초 개념 다지기 - array  (0) 2017.10.01
[C] 개념 다지기 - pointer  (0) 2017.10.01
[C] 개념 다지기 - static, extern  (0) 2017.10.01
Comments