50
1 1 著作權所有 © 旗標出版股份有限公司 9 建構函式與解構函 2 本章提要 z 9-1 建構函式 (Constructor) z 9-2 複製建構函式 z 9-3 解構函式 z 9-4 物件的陣列 z 9-5 成員初始化串列 z 9-6 綜合演練

C++

Embed Size (px)

Citation preview

  • 11

    9

    2

    z 9-1 (Constructor)z 9-2 z 9-3 z 9-4 z 9-5 z 9-6

  • 23

    9-1 (Constructor)z ,

    , , , ,

    4

    z , C++

    , ,

    z , ,

  • 35

    6

    z ,

    ,

  • 47

    z , ,

    , ,

    8

    z ,

    , , (Default Constructor), ,

  • 59

    10

    z ,

    , , ,

  • 611

    12

  • 713

    z 14 2 Time ,

    16 18 new 1 , 16

    , , , , ,

    14

    z 6 Time()

    , void , , void void ,

    z , , , ,

  • 815

    16

  • 917

    z main( ) Time ,

    , Time 2 Clock 2 Time , Time 2 , Clock Clock , Time

    2 , Clock( )

    18

    z

    (), , Time

  • 10

    19

    20

  • 11

    21

    z ,

    , , ,

    , 1,

    22

  • 12

    23

    24

    z 7 counter

    , 15 0, 6 , counter , , counter 1 10 Car , counter 10 new

    , counter 11

  • 13

    25

    z ,

    , , , , , , , , ,

    26

    z

  • 14

    27

    28

  • 15

    29

    1. 6 , 12

    78 2

    2. 1721 1 , , ( 24 ),

    , 12 3. 2328 3 ,

    , 59, , 0

    30

    z 3234

    , , 33-34

  • 16

    31

    z , 2 ,

    "Time t4 (3,12);", , , , ,

    32

    z

    , , ,

    , ,

    z , , , (ambiguous) , ,

  • 17

    33

    34

    z , Time

    1 , , ,

  • 18

    35

    36

  • 19

    37

    z 15 3 , 03 ,

    38

    9-2 z ,

    (Copy Constructor), , (Copy constructor)

  • 20

    39

    z

    , , ,

    40

    z

    , (MemberwiseInitialization) 3 ,

    z z z

    z 2, 3 , , ,

  • 21

    41

    z ,

    , , , , Str

    42

    z a, "Happy",

    b, b

  • 22

    43

    z a ,

    b

    44

    z

    , b ,

    , , , , , ,

  • 23

    45

    46

  • 24

    47

    48

    z 3439 , 37

    new , 38 strcpy() s

    z Str,

    .h , ,

  • 25

    49

    50

    9-3 z

    (Destructor), , ( delete new ), , ,

  • 26

    51

    z

    , , ,

    52

  • 27

    53

    z ,

    , main() , "A i(5);" 1. i

    2. , 5 int, p

    54

    z main() }, i , 2 1. p 2. i

  • 28

    55

    z new/delete / ,

    ,

    z "A *a = new A(10);" ,

    56

    1.

    a

    2. new , a

  • 29

    57

    3. , 10 int,

    a->p

    z delete a;,

    58

    1. ,

    p 2. ( a

    , )

    z , () ,

  • 30

    59

    60

  • 31

    61

    62

    z 3

    , ,

    z

  • 32

    63

    z ,

    , , , 31 , ab

    64

    z ,

    , (),

    ,

    z , ,

  • 33

    65

    66

    z 11 ~String() delete "delete [ ] data;", 7

    Str, "new char[len+1]" ,

    z Str, .h ,

  • 34

    67

    68

  • 35

    69

    9-4 z ,

    z , []

    ,

    70

    z ,

    ,

    z , , ,

  • 36

    71

    72

    z 7 sizeof()

    , 8 32, 4 Str int, (4+4)x4=32,

    , 100 ,

  • 37

    73

    z , new ,

    ,

    z , , ,

    74

    z ,

    p delete [] ()

    z , [] , , delete []

  • 38

    75

    9-5 z ,

    ,

    z , , ,

    76

    z ,

    , Str

  • 39

    77

    z Account()

    name Account() , Str() name , Str() name ,

    , Str, Account , name

    78

    z , C++

    , (Member initialization list),

    , , , , , ,

  • 40

    79

    z , ,

    80

    z , ,

  • 41

    81

    z

    82

  • 42

    83

    84

    z , const

    const , , , ,

  • 43

    85

    86

    z , Test ,

    ri, b ci, c

    z , , , , ,

  • 44

    87

    z

    88

    9-6 z ()z

  • 45

    89

    ()z ,

    , , , ,

    90

    ()

  • 46

    91

    ()

    92

    ()z 6

    , , ( 0) ( 0)

    z , ,

    , , , Complex

  • 47

    93

    z ,

    (x,y) , , (),

    94

    z ,

    , , (, ), , ,

  • 48

    95

    96

  • 49

    97

    98

    1. 1112 3

    (x,y) r2. 89

    3. 15

    , , 1

  • 50

    99

    4. 20

    , , (min( )C++ , 2 ), ,

    1 , , ,