# 类与对象基础

> [!info] 学习导航
> 返回：[[C++ 学习指南]]
> 前置知识：[[计算机系/C++/03 引用、指针与动态内存|引用、指针与动态内存]]、[[计算机系/C++/05 基础数据结构与 POD|基础数据结构与 POD]]

类用于指定对象的形式，是一种用户自定义的数据类型，它是一种封装了数据和函数的组合。

类中的数据称为成员变量（数据成员），函数称为成员函数（函数成员）。类可以被看作是一种模板，可以用来创建具有相同属性和行为的多个对象。

定义一个类需要使用关键字 **class**，然后指定类的名称，并类的主体是包含在一对花括号中，主体包含类的成员变量和成员函数。

定义一个类，本质上是定义一个数据类型的蓝图，它定义了类的对象包括了什么，以及可以在这个对象上执行哪些操作。


![img](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAV4AAADiCAYAAAAGVK+gAAAAAXNSR0IArs4c6QAAAAlwSFlzAAASdAAAEnQB3mYfeAAAABl0RVh0U29mdHdhcmUATWljcm9zb2Z0IE9mZmljZX/tNXEAAFCLSURBVHhe7Z0HmFRF9sUvzJBzlpyRLCKoiBIUs2vOCUUxhzXuurrqGnfBnFddIwZUDGtWTCCogCKKBAUUUHLOMAP8z6+YYtv5D84MMD09w33f1193v1evwqmqU6du1Xs3fc6cORvT09PND0fAEXAEHIGCRyAzM9PEuelWoUIF27hxY8Gn6Ck4Ao6AI7ADI1CiRAlbuXKlBakL6Trx7sCtwYvuCDgCSUXAbQxJhdsTcwQcAUfANilePxwBR8ARcASSh4ATb/Kw9pQcAUfAEQgIOPF6Q3AEHAFHIMkIOPEmGXBPzhFwBBwBJ15vA46AI+AIJBkBJ94kA+7JOQKOgCPgxOttwBFwBByBJCPgxJtkwD05R8ARcASceL0NOAKOgCOQZASceJMMuCfnCDgCjoATr7cBR8ARcASSjIATb5IB9+QcAUfAEXDi9TbgCDgCjkCSEXDiTTLgnpwj4Ag4Ak683gYcAUfAEUgyAk68SQbck3MEHAFHwIm3kNtACaWfVrKkrd+wwXC+VEq/+c7Uf450/Zd7EMtMcM2U0znClpRbEe7P0L0b3JVTIdesJ+8IbBkBJ95Cbh0Q6uqMDCsv33eiWFuydq2t17mqpUsHAuY/ZMp//DVxLFyzxkrrXMVSpWytSJbfkO5KxfOb/DnVLV8+xBcJHCL2wxFwBFIHASfeQqyLciLHn5cvt1vGjbMLWre2LrVr2+Wff27d69Sx89q1s/Ui0nsnTLA1Is6Tmja1eatXW9m0NHt48mQrI7K9TGFaVK5s3y5aFMh6nL4fmjTJLmnTxtpVqxZUcyM5MoWIXQEXYkV70o5ANgSceAupSaRJoc5etco+mzPH3pwxwxZIxR7WsKENmjrVKkrdThCJNihXzsYsWGBTRM4Q56ezZ1utsmVtqv5PW7rUIO7TW7Sw/iNGWG2dLyNSJt7BP/9sFWbOtK8XLrQzW7a0Wzp3ttVyKe1+pAupsj1ZR8CJNzXaAAS5WGaEsSLYg0W43+sb5Xtcs2a2bN06+2nJElsnspy0bJn1lAKuL9VaSaYFFOwsKd+SUry/rFhhSxWWa/X0WSGFXK96dVup+9JUzDZVqwYl7Icj4AikFgKueAuhPrDUrpMZgO/DGjSwylK4j//4o00U2V7Wtm0gUOy3NaVij2zUyF6bPj2YGGaLcGvoHMRaXv/3rFnTDtH9e8lEMVbq9jdd//C33+y9X3+1Y5s0sWf22MMqKx5Xu4VQyZ6kI/AHCDjxFkLzYJFsg4j3ZRHqOyJJlOxomRSWSQFfNWZMWESrWaaM/bVDh6B+UbXzda2OTA+oZHZApMvMUF0kPEOLae+JbDctu1mw87aU3beDbLyvKv5W+t1zp52CqcK1byFUtifpCOSAgBNvITQLSBByvUTq9iItqj0nu+5k2WwrynzQUCaDAV27BjIupTB71qoVrjWvWNGGzpplu0vlsp2MXQtLRMioZGzEGYqTXRGzZDduWqlSsB1D2gdIEe9bt66FfQ1udiiE2vYkHYH/j4ATbyG1ChTqbKnVF6ZNs2dEvFdoh8K+9erZ6cOG2fkjR4YdC71EmNhpZ2vhDTMD96B+00XILatUCfbebiLmgxs3DqS6SGEO/vDDsKvhFBG6saAmdbx6/fpCKqUn6wg4Ajkh4MSbxHbBXtvwPETWttrB03+xj6RMB+7eNdhkS5ZMs1d697brxn4TTA4v9uxp5UulW7fatUIuj2/WNBDsxCVLbYNY+KsF8+2g+vWtqiKcL6V75ajRtiRjnTWuWME2iqAzdD6aF9JKbjJGrN/gBockVrkn5QjkiIATb5IaBs8+rFqXaesyNlilcqUsY/0GO7lRM7u0dVurnF7KFq1ca2VLp1mj8hXt/s572qx1q6xWmbJWsUQpe2SPbobcXboqw6qXL20L1621nxevsHIKz8LcgmWrbaMSOHvnne3MjJbWqkKV8GDF8tUZoXQVy6XbCv1mh0OFsqU224OTVHRPxhFwBLIhUCSJF/touTJsmELFFR0F9/mEuTZ22iI7e/9W9sOMxTZ19nI7ultj+3bGQhv3y2I7fPeGItTl9vbXv9mJ3Zva6rXr7bnPptnBu9a3naqVs5eHT7e929ayjo2r2RvfzbBOTWtYqZol7NmRv1ijmhXt0M4N7HmFX1h2rR25RyPF86sE8kY7tVdz++yHuSLoNXbCPk2tbKk0V75OBY5AISJQ5Ii3pKbMq9Zk2rAf5gRFx/9UPiC+9LSS1qV5DdujlUizSXUrI+Lr0Li6tW5Q1dJ0rWW9Kta4diUrr8Gkce2Kdsa+LfRbjxDLLHF67+ZBCWMqOKVX03AvlorjezS10ukltVvB7Ni9mmjBrUTYNnbAbvUCJuukqA/t0iBAk5m5wXq2184GBSYvbm5I5RbjedsREChyxBs17ovDp9l+HesF5ZvKi/UQ74YSG8M0v1zp9ECimes3hu9yJTYpz9IiU/7zu1R6Caue9RsxX61C6XAvZeQ3RMuuiMTfVcqXCrofYq2c+FsmjWjXrVA2PcwPnHR3hG7tZUx1BIoc8UI6QRnWqhSm6ShDyC2VD3KHbRe7bjzCuxOysk3+xcXh4DTEHI/MhMWwLf1OJNMt/YaU/XAEHIHUQKDIEW8kJ4hrzbr14a1c/gKY1GhMngtHwBHIGwJFknjzVjQP5Qg4Ao5AaiLgxJua9eK5cgQcgWKMgBNvMa5cL5oj4AikJgJOvKlZL54rR8ARKMYIOPEW48r1ojkCjkBqIuDEm5r14rlyBByBYoyAE28xrlwvmiPgCKQmAk68qVkvnitHwBEoxgg48RbjyvWiOQKOQGoi4MSbmvXiuXIEHIFijIATbzGuXC+aI+AIpCYCRY54eT1ifN8Lrz8M/xNeKpOaMHuuHAFHwBH4HwJFjnhXrZVrc72RjNco8ipe/pfSe2n9cAQcAUegqCBQZIiXd8mWEdm+OPxneWtYaItXZNjfnv3Gdmlazfr1aWXrMten9Ht5i0qD8Hw6Ao5AwSNQZIh309tkS8iDQzW74slRtmT+SqtSq4Kd1KNP8LiQ4q/kLfia9BQcAUegyCBQZIgXRNdmZFoXuc85c7+WdvfjX9lpx3a07m3q6L28mUUGcM+oI5DKCEQPL9GhFoInJ8+GiddTuTypmreUI97gyLJcOVuzZo2tX7/e+B8PVC2eFPqJeEdNnmd95ZssuLzJo3OFsmXLhjjXyfV5YrypWjmeL0cgmQjQ08qmpVmGOlogW32n4fgP0aN+Ew/6Ttms87Hr4YxgnTxb+5E3BFKCeCMJ8p0ph42jRo2yZs2aWaVKlUS0myozuvfB60Sr+lXshat7W42KZeSJN3MziebkAog4+RDPxIkTrXLlylarVq3N8SXeE/MRz23pf2J++P1H4f43aPxvdMgePm9V5aEcgYJDIE19BOJ8dPJk67HTTvbur79a44oVrWrp0jZj5Uo7o0ULWy3yLSPChYzvGj/evlqwwK5q3z6EKSPCrl6mTCBsP3JHoNCJt6QqsYwqDLLj9+LFi+2KK66we+65x3bbbbdAmBAVShVSLl26DDRsDWuXtbVSxemlSoXrkbQzMjI2lxqFG6+tXbvWHnjgAdtrr73stNNOC+lFguVaaTWeGDbGkZ4uB5FZpM054uOexLTiOfKOkuZ6LA/hYhqUg3S4lqZGGvysZanv3KvpfyFo2Gyhw7daHoV+fqL3sDsgArQpFOv0FSts8C+/2PglS+y3Vats2vLl9tOyZdZcYuXA+vWtltr/cvUDyPnW776z0mrHv4qU5yps22rV7JkePayc+sx6V765tqJCJV7ICvJ56qmnbMSIEbbLLrvYn/70Jytfvnwgpy+++MJef/31QHiHHXaY7bzzzvbKK6+E823atLG+ffvaV1LH7733XiBoCLVVq1ZZBF3ahg4dGsLXV6M5+uijgwmDuH788UcbNGhQIMJ99tnHDjzwQBs2bJh98MEHAbAzzzwzhOVewh5xxBHWoUMHe/XVV23hwoXhc8YZZ1jbtm3t2WeftW+//dbq1q1rJ510Urj2/vvv2wKpgTp16liFChVs7NixduSRR9pBBx1ko0ePtueffz4o7+OPP95at24dCDu3g86Rrm1zpeSeffGKtXLnLuWR5voiN9z8eu4I4LdwpUTNQ5MmBWL9z08/2Tr1S4i1kdrvWpHys1On2rnqf6cOH26fzZljXWvWtCvbtbNF6kOXqU3vUr26VRTpZjrp5g44fTlPoQogEGoQ9Td48GB76aWX7JRTTrG33nrLqlSpYhU1xVm9erW98847gbwwETz22GO2995723333WfnnXeeTZgwwcaMGWMDBgwIBAhRfvPNN4F4iZfr119/fSDnn9SQIFEULAcEC+lDfrfccovVq1fPbrvtNuvUqVMg5vGaRo0cOTLct//++4ffmD3uuuuukPYqjfBPPvmk9e/fP1xDRT/xxBMh7kaNGoW8XnLJJfb444+H/JA/1HaTJk3ssssuC3GioP/xj3+E89WkFlDzWzowc5eVC/jFK9bZa19Ot9E/LbCBZ3ax8mXl7t0begG0zu0bJcMjHqIzMlPTBsrMCdtuD/U1FGw1zf4g4IUi1RbqIw1Fvr10rZz6DOT7dwmkh0XS16j/VVFfu1Qi6G86t55ZnOJyOZB7+yk04iVrTLeHawTt1q2bnXrqqXbIIYfYrFmz7MUXXwzE2LhxY5s5c6YtXbo0kGbLli2tnUZZCBYVu5NsUT00vflO0x7C8h8FXUrmBxQ0pH3++ecHkpsyZYo98sgjgagIO3fuXFumaRRqk7j79Olj48aNC9ewAe+xxx72q+xckG/Hjh1DvJg+IE7ifuGFF4LJAaL97bffQllWaKrGN+W4+OKLQ772228/69WrVyBplDpxMjCQD+JctGiR1ZR62BLxslUuQ67hnxkx1f793iT74ttZdug+zeyHGUvUkTe6h+Xc23ihh2AaX6tyWWu2U6XQZnJaiyjMTEKUmAc+nj3bqqltXqBZ2JNq9/U188SEMEhqd7oIuaEE0Qy18ffU3r+aP98mqQ/Vk9KdKSFynWZ156h/1hNJu+rNvTYLlXhphJDO9OnTAxEybW/atGkgwmnTptnTTz8dCItwkCL2X9QihHr55ZeH0jVv3jyQJKYDFObuu+8eVGvt2rVtvhoHcX/11Vc2b968zTbkZ555JqhnSBxzBOQHaXft2tWee+45e/DBB4N5gcFgthrj7bffbtdee20gTIgaNQ65cy/qGdX89ddf20o1Tgg02qQhVwYQCBmzBmoe5dyChQrFwYHahYC3dLCmTEOGaL+dtkjLy5mWLhPDtLkr9NQe97mlN/dmXrghMvVIOzb5pnUg3sLNy5ZSX5e1dkFruk2C4QORa3X1o/1kQiutNjxTbXue2uxn6qffqx9C0I9KVLAoN1nCCKI+vGHDsCDnmztzr+NCI964uIRd9J///GdQiBBW7969raEqkM+uu+4a1CULX3xQw19++WUgMGyj3bt3D7bZjz76KKjanj17biZHlCbXrrzyykBskCjkhy12zz33tEmaKqGkMTNAzr9oUYG0iOeAAw4IinTIkCHBhEFcEPwPP/wQ1Ap2W4i6vVZ02YHxxhtvBPPIEi1KcH+DBg3C/cTNeUgahY6yP/bYY4N5BUJGrVetWvUPiZcparnS6XbjiZ3sqD0a2aPvT7Ylq9bZkfpdvmwpNzXk3sZTIgTEi6kh1dQu4KDI2a1wgkxh2G8f1Kxs1xo1gt13rNYs+stctreETFu11UFaE7lRaxoT1Xew83Ifpok3ZswIOLsMyFtzKzTiJXuoRwgN4p2himPaXl1TF2yzKEPso0zNIUsIDcJD8U7V1IftZpAzZgBIFIJk8Y0j7kC46aabwuIYqpKwmBYgQcgd0wNqm/8QMwQJsZIG6bK4x4IaZIoyZsGPBT3OYwvmHPdg/oDAMVGgnCPRkodLL700xM89lJEB46qrrgr2ZwYS0gmNNZfH7ugY7GTo1rq2dWpW3SbMXKKHSdaLvNnXnLeK9lCOwJYQQLWuUHt9Wv1qjBaFj1Vb/pv6FXt3B2i9g8W2Jeqru4iM2UpG+I8lgmbLxJCu34t1bT47jFJVzqdg1Rcq8UaShGwxDTBN5xOn36jBGqrs+CAFKpIFMUg0bs+CKFGwkBdkF7efbdp6VjqQZLwGKcbtYOygSNwjzHkUaWI8kGvcOkYeIE7ixeQA0XOOvDBg8JvBIpoN+CavpEGclJH8QcLYihPTyUu7QDHxQiAIuFPTGuHdFE66eUHOw+SGAAM7u2SOUDu+UDNJdijwn+M+mfG+lMkOEsbklamwh2pGt5fWQdpJ0LAjgoU4zA911ScyvFHmBne4XujESyYi4cYcx4Wm7Oe5DqEl7tXl/5ZspNmvJYbL6Z7s5zBNJB4xX5BpJO0/2gqWuGAW88x9PJW3tQcEvH7Dlm3CWxuv37fjIsCkiV0NR4l4MRXwIEV8Ug1120tmNc6vUV9DMHTRTBFihog5X5fZoEQS19nZ4EfuCKQE8eaeTQ/hCDgCBYkAdMmTadkPiDTxPGuDELM/HrxtteHEu234+d2OgCPgCOQbASfefEPmNzgCjoAjsG0IOPFuG35+tyPgCDgC+UbAiTffkPkNjoAj4AhsGwJOvNuGn9/tCDgCjkC+EXDizTdkfoMj4Ag4AtuGgBPvtuHndzsCjoAjkG8EnHjzDZnf4Ag4Ao7AtiGQEsSb6J5n24rjdzsCjoAjkPoIFDrxQrq8v4DXJEZXO6kPm+fQEXAEHIGtR6BQiTe+FBrvDbzzoF+/foGE3avC1leo3+kIOAKpj0ChEm900fPJJ5+E9+byP/EFOKkPn+fQEXAEHIH8I1CoxMvLwHEKyesUeZdubu+lzX/x/A5HwBFwBFIPgUIjXuy5+CrDoSWeJlC7f+QCJ/Wg8xw5Ao6AI7B1CBQa8WLfxXMD3iTwIgER58XN+dYV0+9yBBwBRyB1ECg04sWWi9vzM844w95///3gXBKPEa56U6dxeE4cAUegYBAoNOKNxcG9DyYHvD1EdzoFU1SP1RFwBByB1ECgUIkX1YuzSHys4dr9/PPPD953fTtZajQOz4Uj4AgUDAKFTrw4gRw4cKDNnDkz2HjxyuuHI+AIOALFGYFCJV6AxSEk28nat28fiNe3lBXn5uZlcwQcARAodOKN5OvV4Qg4Ao7AjoJAShDvjgK2l9MRcAQcgZRRvF4VjoAj4AjsSAi44t2RatvL6gg4AimBgBNvSlSDZ8IRcAR2JASceHek2vayOgKOQEog4MSbEtXgmXAEHIEdCQEn3h2ptr2sjoAjkBIIOPGmRDV4JhwBR2BHQsCJd0eqbS+rI+AIpAQCTrwpUQ2eCUfAEdiREHDi3ZFq28vqCDgCKYGAE29KVINnwhFwBHYkBJx4d6Ta9rI6Ao5ASiCwQxAvLoU4iqJPN3zRceASKToExV9dUSzLtrZ4yl0SLDZutDT93qDvjVmRhv/6zWtFS+p3ab1Qf+2GDb97zWgpnePI0HniKpF1L3HE15GmE0ZxZOpDHFwjfDzSuU8fzpEmH37HfBAuezrEQxjyuz0P8r99Y7T/h2tu+c0pD/FcIr5bigf8KMP2xia3fOflekHgu7kd5SUDRTkMHi3mzJkTilCrVq3NPt3oPByxw2X/z7W8nMspTMRrS2nkNV3CzZ8/P0SHl47vv/8+kC9kvNNOO1laWtrmqsmpHH+Ut6JYp9BmJDzIlw9ESMeFZMuBh/6v1juep69YYY0qVAgkSKcm7OxVqwxi3alcuUDg4aAd6NqaLJJepndCE766cJ63Zo2VUfga5cvbRg18a/RZLq8pkHIVDearlM4K/a+j+EiH86SzSG6sIP9aOr9GYX5duTKkWV4v+V+nOALxb0MFUF4Iq6zKu1bxkWZuB+mVUXjCJg4kifeRZ8pOOYj/jw5SLMUAR5mEQYbuiXeU07mNKiPplFaa4JYTsVIHeU0ve15InwGN+l+t+PN6gAF9ZV3CYLqluEvhgFf1t631lVPeirXihaBWr15tJ5xwQnjZ+pAhQ4KHCwgperrgRey4ICpbtmw4T6Xg/417o9rkOuEgPYg8hoH4CBMVKOEi2RE2EiPxxbCRINeoUxMX4ThQtIQjX4leOD799NPNRPuPf/zDTj/9dJsyZYpdfvnlhvcODuIkbb6Jj2/yG/MW4+YabpUIm9NBXyP/Gzbk3pHz2tC3VzhI9flp0+yHJUvsvJ13tr99843113ePunVtgQj1Ov1vW6WKna1zkO7pw4fb33fZxQ5s0MAyVWaI8hnhNmbhQju7VSt7UXHR+ej8tUWKV3boEIj6qjFjrGnFiiHMCcKejtpHabRS3Ec3bmz/0uC3TPjdtffe9vz48faU4rxz992tgsIRtpna2RWjR9sc5ekSOXMl7D91z/FNmliLypWtvXwMttEHkgJriDOnAyKnFshfVN1RbZdSOpMXL7Y7fvjBzlF5u0pQrFV9Q6pxoAnEmKXw16ucDEzjNIjXUjtvqHJynUEotB1d4/cs5fnmceOsv8q+R+3alqm8ZU87hIVwlYcflIfnfv7ZTmna1NqpLRKewejmsWOtrcpYRe3tHXmW+bNwqKfBKxBz1gyBci0VNjd/+63tV6+eHSFsuZ+DeoH4GQg4IGc+lIdz1Cfx/Lx8uS1Qn+lco0YIF/HhOlhwN/eAcxiodX6s6r+s+mwr1VN2DOKAVkbXv1O4F3/5JZSNut/SYLW17btYEy8mBohrpRQHZPONOuc+++xj06dPt5dffjmQ8iGHHGId1Oleeukl++6772y33Xazgw8+OJDbf//730CCxxxzjNWpU8eGDh1qo9WpGqgzH3XUUTZ79uzgIXmVGuzRRx9tTdS5IDkq+uuvvw5pV1Qn5v4ff/wxuLLHxRF+5ji3bNmy4GuOePbbbz/r1q2b/ayG/MILLwSiPuyww0LY5Wpgr732Wqjj5s2bhzhxDDpWDfytt94KeTvyyCNDuK+++spWiHi6du1qkydPtkmTJtneIolevXqFvNZQI+3cufPvyDc00PRNjXrFmgxLT9usB7e2XW3X++hQK9Whn/jpJ+tas6aNnDfPPpo1y27adVfbILxrqIN3F1G8IOwmC9OZqu9fhMGNIpFBItiewqejiGGFwlZWm1giVdteMwhU2o9Ll9ozCgOBzVSuh8+da6vUVi768ksbvWBBuO8akfFF7doF4h2htH8RzuV1/ftFi2yi7j/yo4+sqtoJJH9Yw4b2qWZYJRR3/xEjrKaIDkX24MSJVklpP7DHHtZRdTBGJAhJUR6OxKGO3/Oz1PZyhakoIqiqexeKZIJo0GeRyjBZaaOu56sdo/5Q59wHXpSTAQhibaL2MlthzlJ+jmjUyG5R/aNCfxFWxI1iT1d7G6p2CK7nC4vlip+4GfBQ/6QH+VRXvBBmWf0G43tF/h1EstUUhnrgeFBt7k/CASx+UhqQJsQOUUKADUTCKOVvlN7rM2bYIcJtheJfjEBRuNrCjAGLwYKycFD+39TPwKyBBo5Kuv8+Yfrer7/aMPXXuoozXq+v6+DBnZSbexoLgxX6pl75/ax4AAPSFOWvAjNIYQDu4LJQ7Wes6payddeg1k7ly1mqbH0zL7bEu0m5bQjkiUpcIqUE8eyhhn/LLbcENYiH4wcffDCQEmTXp0+fQMCo0bffftsaquHw+9prr7V+/frZDTfcEIgaUm2kBvzoo49aTXUc1PIHH3xgF1xwQSDMaerI119/fSA4iBZCf/755+0nEccpp5wS7oPQIXcGg06dOoU8/f3vf7dHHnnEqmiEraDG8/DDD4d0UML8x1SySA2CvLZo0SLkq0uXLjZGxDBDDbhjx44hXdKYMGFCIN599903lIU08OYMJuQxqt60kiWsTOk0m7NolQ0e8bOVSU+z8w5urami7KfJEL6bZvqWkbllGygKDxKco04Ecdyrsh2iummGElEHfU/l+kG4QIwtpSpfkVJBGZ8r5YYK7STyHKLBdoqI6oI2bewDhS+v+m8u1XNQ/fo2QecxTzyhwXGxCGC6Oh6ExfWZIheU297CfpgIFfKoofq+VfVWXZ39OA22n4ms+6o+DhWBTFP4w/QNUfUS4TOYof5eU/oQwkHKN4PzS8rjb0qni9oP6i6aC1BoEN65I0cGM8YslRnivE/tFpU+VHkvoTAnSolhalig9nnyZ58FXI5R+ft9/rkdTptRGv9W/RPfUTqPIp8ghUp+DpDCfFcES3wQKUR8qPIFLnsrz48LhwnCb57yUVPXH9prr4AfavE1tadb1J7nigSPVR4YTG7VAHelBAlE+w8NhhAwZIbCjOUiL8wWMNX0k5i4VQLnfeVhVw1CnwjX2xXHEtUBjeHfSm+qcL5PxEdZT1I6Ownra9XvGHxQx2cI7w91/1Tl80UNuDurLfxdQgTsjtV18vGBrl+reporjI4RJrurDpnxUL/virC/UJsCA2ZDYLCvzHeXjxoV2hMDEoMXGBdENyi2xIvahfRQqRDqXHWOBQIaRQgB3XPPPdZKHRNFCIER5oorrgjq85133gnKtq2mSBDelxolISvU5yxVJqRXWwqLb1Rss2bNrKkaB6RGh+UezhEXCpWwDAR9+/a1/v37B6WL4sb2zH2YQThIl3vuvPPOQOiQJ+aR8mp0pIXSbaxGhYli2LBhgbgPOuigoHTJF8oX1XzjjTeGAQeVvVANjXKQ/tlnnx2IisGEA9JdumqdDX7/Z3vuk6k2etpCu/6EXWzCjCW2JkPTvoJocdlEwqbpXglrULO8VShT6v/ZAsOUXJ93VWdNhRMdgc5zn6b3AjxMOYmD611Edv1VVmy5L6kzfi51Wk4d6ECRK50LMkCxvqVO11Ud/jl1uus0WBHnDBHme8IQ1chUFLtsfeGO9oe831f8xEMeUEcQLqaLT1Rfy0QYj4pY5qvTD9BA+LpI6kfV8S5S1UFZKu5P1f5Qqp01CPQW8TH9ZkpM2RJttPzHxspAU015Plnt404REGofU8DniudK5RlyoyxnqU1SfsgCpRhNKe+ojEzB54q471Y7GiCia6pBaS+1RVT6A1KLx6ktDVN8l4ls6qpM40ViN8o8A0GinIl7gNJGWWKbZjCDuKeqbBDjMcKAwWFvxYlqfkjp7K52C86Em604iHOMygI5d1f75Nqb6peHi6S/Uv77Kg2w+UYD51WaeTL4kX4n5X2U6uNoqW9mDZiSwP409QOuUzfMFiDy1iLdmxQ/CrmbyPVO5QNV+5gwAyeImIGOAbiNwjbSNerkLpmKTlI/ZQZ1tcQLdfK0+jOKH6XO+Wg63Hptm/OdxZZ4IUpIi0UoVN9SppTPPGNffPFFQIJFK8J8/PHHgdj4j+nhk08+CQTNOUgTIu3Ro0dQqPvvv39Y5HrggQcC2e2qURXTBWaAu+66K5gLUNLsONhdxAARPv7442Hqj8pBrWJ7hXC5Rp7I386qaM5Brp9JvcRBAnKFzPkQJ4TJ/XxQ2TGP2G65zmCDCSKQqsoGyUO8KGzSwKQC8VZWByROTAqLlq+1F4b/bF+N/c2sfGlbK8IdMXFe+M6a5W3vNve7+NaLO8uVLmmVy9ezSuVKy3Twe7ZnioqqQ20eLxKiM0BIe6qDMfWFvA4XAUwSlkwbUUxfq8xMD1EwN8qG2E+4MmVlasm0fw/dix1zksLHxSamqlcLn7tENBBkB9VzWCRT+qg6FOGRSmepsIfUzm/dOhAQyhbygbwxYbygjvuESPgUpcnUFzWNwowLTZA6B3GjSiGVnFbPmXKfKVK6WkoMckSBMgDsqTINlBlptNorU3im+NiPb5MKHaS0OyrfkN9Xug4xU16m3divGTAwsZDfDJ1ngIKsIUnsmZgU9hSJggkq+Xqp7GGKY5rKyfQe0lTD2mTW0DfhKqpfXKJZBMoVVfudVDXXQxtUvMwsILElSvNShSP/E9QPvlC8i3Vuf2HzoQavPhrUrlefQZ2ivJm5lFWd3K88QPJzdH6gBrUjRZQoXLCHcBkMIFmIlHaBGaSV7uUe2sM9ivMc1euJug+zyWCVk5kMZSb/DLC1stZuGLzA6fYszGlHwZ5cAEexJF5IB7sr6hbywf7KgSqE1CDI+++/PxAiU/CLLrrIbr31VjvrrLMCIbFwBWG9+eabgYy7d+8ezBLvvfee1VcDQaG2USMax/RIFY+C3UVKIS7GMUqSNsTI0VqddLEa5CuvvGK/qtOSBxbKsNG++OKLIV+Q5/nnn2+/qGFgLiAf2GkxL/AbokXxkgbkesABBwQljgkDU8QRRxwRlDaf0LHVuN99991gj0Z9k+977703mC7OPPPMUC7ItUmdivbilT3tzdEz7T8f/mTlyqRb/wNaaTX391uxCqDt/S5KFvQyYeFsB1PlkSIRCG43de7rhRmLXdWxnTI11cGOA+j6Kw2Yr0iFohZRMv2F+8MiA1RvjLmmcH5eYehUqFvIBgJDEUO2UYFCUvOEEQMvJPeI6vRwkRG2XDojJgcWgbgvrpDz3VydvrewrqO6P1pYX6WZ06H6P0MdHFW5l4hmvcrypNTYr2qjT8j+nmhqoDzkgf0qo1SO4WovqGfsoNhAy6ttk991WSvzpNlHcV4nXN6U0h4oomI3BnZWlBt2bWzBqGjUN4t+kC3ESXmWKi+YcCA7pvAoVwgJpToiK23snOCG7fwjqdXvdQ1MoVfyhKkA4luv+sAsgionjpBPpcngQJmox5+EG4oX0mfwbKK+RFjI+Qul963qhYW4uJDGfRAqgyGmCQY4yBLFTNkZwFC9FVQvrdVHUbfMdFC3lHGc+sFQ9an7pdovk6IlT6h5yJc0KDP2bOIgbkwQQ2S2G6W8MkDFBb7t3f6LJfFCVChM7KYoS5QiZAgJQ8hM45mSoxyxw0Jkd9xxRyA9zA9M51Gf2HIhOuyohMEGO1EVeOKJJwZ39Chp7KsQPQqXNPmgYq+55hr7VmqLRTQIdLhW2RkAevbsGcgQImQxjnRQ2NhnuQ9zB3ZflBaKmoXBaJclv5A5g0Rdkc/tt98ewjIoMIBQNtKCiI899tig2OepERIP6WH7hcC5Hg8G9HrVy9uFh7axgzrXtzmLV9vqdZk5qrDt3fgS48vJqhGm3crgCHVkTAOoWToaJAQhhlX/LFmOuhyvwY0FNRZiCP+mOhCdFNJAcaL+sA2y2Mb6OeT2jTp62GbGAh67UnTuVOFGWpNEMNzDToULROJsL0J9D1XnHMDecN1TQfWEzXC6COVSdew9RILdSFdxoqyJC+VJXBAI5hFI8FyRIsRBejlttYI0PpIS/FIEgII8TfE8I0W7KmtrFvkN8elgCt5DZWJhrJfaEIMGgwg7CtjChr2SdCAmdobcJrNDb7WfO6SSGbrIJ3mBtCBKCIh02dXBwcIjeWSw6CsbMvnfS/dge2cw4fwy1UsvlR2lPFiKlAGCMhBXN6lo4r5JgwOY8Z+FLuzSJXQdUsX+fqLSQxk/pcGIhUEW0MgX9ttz1C8ZRF8WBpS3v2YDDLQLhD1EfpHqB5PMWOW7sQY/SBaFzQxmsO7ZRX2eeMCFNYB9hNcB6hN3Y3dWmVkPwPb8tuK6VIIGu37cJlgQ7b5YEi+dEjLEfgpZQVwcEBSmAsiRRba4DQwiQhViwyU8ahDliDLmYBrPB5Jkyh6n/kzZDzzwwM3xEC8H3xAji3Mc5If42TGxlxYOmO6TJuTKOb5JN24nYxdCTJeFtrjNLWyLUdzES34oCzbesC9R/8kzeSJ+4mRw4Z64ZQ6ij1vNEhsT6jZDarNxLdmQ9QlqtyBaWz7jjPtz2T5GB0ahDNZCKMSCegvYUj/Y9tSxdhW2dEYWzFCkf9fAx4JP3axV7srqyChlCKuEyGiYVB72TxRjE+HGdJYFsCNFCCwwsRqOnZOFrKDM9J/OeLraAdvNamsQZDoLyd6sga+HSG+DsEdFhz3GWQtbF6ojs/MAsgqiQNcgD8iQvGfHmtYKAZ2pdE5Vu6mo/LLFjWlwNI3srPwO10Iv28MgS6bk7ATA9slWL3Bi9wXqkcGLPcXYfFGtTOMpM4tlVYQJZeNe1CoKlt+Ha3C7TOKiUtYiJGgPU3ooQ8wj1AXXhqr9UxfcR7yU/VmZ5iBewuwjksVMcYcEwSkqCyYUFhtR2pD2WsXHzo3uwu4mYQjZYkJghsMukTAjUdpsDaReMOe0U7unXGwD/OzQQ4PaBR8WBherDttkXb9K+d9P/ZCZEaYQlDfxnK5BDPMENm52L2BCQSFjBhoiMYUZA9MT9Uf67PHe3kexJN4IUvanuyCgeCSqvkhyieBG9fo7glKl5xYmXof8EvfLXnjhhWEwgNTjXl46YfZ85JRu9kqP5Yr23sTrcZDhOy6iJeZpSw2InQUQbqodkBMdlwPSofMEsiLDEK++qdXjRI6oQBZ8wqZ91fVuIuM6IgnCoBghoNWql6CU9ZutYm9pUZWpNwf20Yc1WJHOsYrnBMUJybA6DwlzoLbZPRGR4l6IhEUcBjnSRVUHe7J+szJ+t2ZDdOIa+s11ji3tCw2LjYpnZ5EhCq2zCGm98gy5QgaRrCEJroMF+SWfDArYjSknW7YaCzeUanzSrqTSh5hZhMK8geIL+GXdT1hmEBAoZeoq0owPjpBnzgWFHnFX+KpZZoS4KEi5mCGQJ+JmBwh5h9z2FdmHfcP6RBMP2DbMMi2ghEkf3NhtAbbhARGFAT+UeRAS9Bts16pn6jg+uIIpivvJA9e5BzKO5Qcr6omBO+zhTsAATLgHQm8oUo6zkIJ44hAsizXxphKJYKqg0UViTKW8pXpeEkkqpwcO6PSEYa8l01uIAWJqpM4bNtPrQ0eP4SgvHQsVjfKJYbBbxultUMVZJJBdkdJJY8ckDAQRHhvOGgxYcIoEgR0Usvsjsk3En3jIw4tSrCwGrZaSjPEm4kD6UfXHuBP3mub0ZFZQy1mJcX9O5A8Gj2pNg+n/agmNxLInphfznFN9JJ6Ls0DIMVH4/E8CWdj6Rd0kxh/CZ81qSIu8Z39CjTIknsuev5zuSYw3p6f4Am4FoHCz9zEn3iSxTmyASUpuh0smEkTcmhXMFAkdN6fVaTpuYpi4aAV4dNCcNjITbyRCwgUzTxbhRtBDHqIi18k/ejw1p4qChFBl4WmrbHEXdMWSNqv88VHegk6P+OODF9v76bBk5H1r03Di3Vrk/D5HoAARyC9Zb8+sJDvtHYlwYz058W7PFutxOQKOgCOQBwScePMAkgdxBBwBR2B7IuDEuz3R9LgcAUfAEcgDAk68eQDJgzgCjoAjsD0RcOLdnmh6XI6AI+AI5AEBJ948gORBHAFHwBHYngg48W5PND0uR8ARcATygIATbx5A8iCOgCPgCGxPBJx4tyeaHpcj4Ag4AnlAwIk3DyB5EEfAEXAEticCTrzbE02PyxFwBByBPCDgxJsHkDyII5BsBHi7WVm91jC6Oo+u4IN3iizXOrz5DO/A0alkfKk6L/jhzWshHC/ZSfDhFF4XmvDyoGSXy9PbhIATbwG3hOj+JybDq/Gyvyc4XsPbBW+7StabzKJjzvgS9q117Ec8eLbgfcN4zMhLPNxDeXF5lPiOYrDgGue5HuPjHK/W5AXveNoozkd8p+wXelE5Lz/n1Ye8OJz34fJ2tOiSBgL9j17Yzsu+8azAf95Bi5+zL+X1AseX/I4H77klHO+9zf6WteKMZyqWzYm3gGoFgkBd4BMtuvKprhdv4zYIv2e8pJww0bsE2cDPG0418a0WvWhEZ5eJ2eQ+jujCPv6PhA0BckSvxzGdSGqRGAn36quvBldE0WVQfF9wvCcxjpgH8paYJk42v5cLFbw34xGDl7uTRixbDJsYF+XEJf1HH31kRx55ZPCcEV+3SL7ADF90+JJjoOIcjkrxXYfT0cTyxzznVO7gIijJr1bc1ibFO4XxCXeW3OwMkjeH++QlA28L+FPDnfk1ckmFCyDIeIT8nT0h7Frppei8v3Z/vdz8anlZwHEjrnBw+hkPHILihh63N6jiVPAysq1YFdX7nXgLqOaiy50XXnghKDVc/uCcErfrnMOvG8oNRYcLH8Lj1h33Q+eee24gTUiGeyG2qJITvVdEj8F4KyYMCjF6uYD8iDfeBykTHkedeEiOapP84AYJD8TkAUKMLpFQorgeQhFHEiUO1C1p8o0y5Z7BgweHuA+VK5ZIutEbMuXkPlwvJap98kg5IWbiYOCJceIIdLQcRR4idzOEg5hHjhwZXNYfdthhIU/gw3nu5SC/EROuU+a8qO8CagJbHW0J4TFEfsHqqe7xFIHH4DvkxaIEnhtUzy2E83D5oZspXM+VXzGcWeKjrJFeuI6LGzCl3NH9TiRYvEDg3YLXMBZFXLYa0BS80Ym3ACuFDgBxHXfccUG5cfD99NNPh3M42IQo2soxXx+5oMG1+wSpG8gL78MjRoywenKXcvbZZwdihHRxjImHYsgIT8L4gfsZ54JZTjBxbokHZUiod+/edvLJJ9s///nPEAbSw+8aSpKON3DgQEOFP/nkkzZ06NDwm7iJ95577gnkit+2008/PcQxTY4SI7F+KseE0SMzDkIhTfJ033332SWXXBIGF/KCw82XXnop5B2CJy6ckJIfykSaDD6PPfaYjR8/PgwcF1xwQXD8iSPR0047LRAozkMhdvAEg9tuuy04J6X8l156acgbmM2Wg0jImpkFA1kPKUYcjGZ3g1SA1b5NUeOnbKlmQ2/JoeZV7doFN+i8KHxvmQc4cKyJu3f8yuEvrLdwwm8acyCujVT4ZarnkQqDqyBUcfRijH82/Ky9IW/Ex8itUXQYuk0Z9pu3CgEn3q2CLX83JdokcW45XQ0fgoA0IFYIEC/FqGKcaeIa/oknnrB//etf9tZbb9ndd99tjzzySCBXCATSwwU8cTz66KP20EMPBfIkLFN3nHxCNldeeWVwuom3Y0gY0howYECIm3vef//9oBzJB4R7ww032MMPPxyIGRUKSXIOD8UMCgwOkCXEivdk1CllgyBxtMl1BhMGlffee8/22WefQJI474TEn3nmmWCKIP/kB1J/4IEHAiFD2scff7z9+9//DgTKdYj2L3/5i7399tuh/G2k7pgBkPfv5CH3b3/7W3BZ//jjj9scTbkheuJACTOgQbqYURJdzuSv5pIfGs+9uFDHxxv+wi4dNcr2UxsJvuY0AOF/7gQNnqhWvGoMV7kXiFxrSwlj622vWQ7+1p6VZ92pUsG4n8eLMh4t8KJcTtd2jzbe5BfPU8xCwIk3CU2B6Xg8IN3ozRjVByEx7ceuy7QZokS9QXxMqyEaVCFqFeKNXob/9Kc/BZfxkAvekFHH2Fh/lVKqrY41ZcqUQJKEx6bM9Dwq2F7y5/XOO+8Epck0/eCDDw55gvyJB+KFjH+S227UOMoIpYx7eNTtqaeeGsgccmsnVcY9hINUn3rqqUCeKGqIGHJHxRMH+ecePC6jZFG3pE8eV4gkRolkIGDMJnzjlr5z5862TF5fmSWQX8JOFamAKXlg4MKEAcm/8cYbgaQpC+lB3qhy1H9RmFqHPCrfL0vJ46Z9pch3qsxCeN/FXADZolo7qD1cLTPMD2o7R6tu56p8g1Xff1O4s7K8YOMIEks/OyNQvTi+XIMpSf+xF/tRuAg48RYg/nQkCOVzLZJADtgoJ0+ebJdddpndddddQTGi+l577bWg2FBm48aNC8oOEuYbe2wN2e0IG51lojJRvnxDKpAy5EQ4XL/XkjdWiHPixIlB8RFHDA+h8SFfkBLf2GchK/IHkaMmIXzUN+TLYMD9kCakjIqFfCFYlChEiQmFwQKyu/zyy+3WW28NChuVy+IZ9maULvcSD3mOdnAW0sAIdc1gRBpR2X/yySf27rvvBtMDqprBo3Xr1va1Fpgg5jjQQMYoZ8wkzAKOPfbYoMQZdCD6oqB6Swu/SVo8G6ryP6WBZLCwwANvJ9UrapftYuxM6K3BZpBmNCdrFsIiHO7RzxImV2ughbjxl4bfNDwc45adg8U03MTjmBNbsR+Fi4ATbwHhH3clMM2GTIcMGRJU2u23327t27cPxIBCg0BQnBAnShTFxg6Do48+2p599tlA2NhVUYeQB+Rz4IEHBpUMqWKegEB30Uo26g/i+89//hNsrHvuuWcgVMgdEkRdogzJG+q2jqayfCA37kG99u3bNyhuTA6DBg0K5AYBY7pgMKgpd9qYAJ577rlwb5cuXYISRRGTP9Q3yphv0uzXr19QshAg5ZuvhSLySFwQNfkhbgYeVDiDDeTKDIBrL7/8cijrxRdfHEiZQQUljTkBEwOEDAbMDsAYLM4///yQHnZpsIOoiwLxMhDNx+QiLLtI1Y4WVucr72WEE1vKIOaZwnqA8Jwggka9NlVdQKpT1H7O0cC5v9pAS53jP4481zLIsVCreNlahoIehfkHt+dq+07BBUQAuUTrxFtAuMfVegiD6TH/Id646wDygBj5j7pEuUYFDEGyYARJQUBM0eNuAMwOf/3rXwORQLYQI/FjV+WApCBKVC0KmGtxlwTXuca5k046KRAwnR17LWQXyZCBAbszhEochKMccbX8wgsvDMqVfEHCccsbeWS3BiqYNMgDJgXUMGEhWs5R3rj17aKLLgp5wJaLgkcZ803YaB5BUYMNap4DzBjAyAP5o8wMOmCBUoaMwae73JRTlqJAupRrjfK8m8qzpwYXHor4a8eOYWEsujCHJNnju5OwJFwXDYKtNTBDsKOFBYTK9bWqr72FATsYOHB3v2kD4iaPx5gsonv6Amr+Hq0Tb+G2gah8IYu4pYsc8Tvu142kHL+5xgd1x7nELVjR3BBLFbeXxe9oC0YZQzhxz20k2cTtaMQRz6OsSSuSFINEJMg4iMQ9sZAiapf/MXyMl3zHcHzzH0KPe22JN+7njekTBnzi1jXCxLjBiAPzRLTT8jvmIWLKNdKJcZAvZhWJg1bhtoS8pQ5V4tI9kmWiW3oIE/vsdRpwIWTIk3PlNPD00cDD4lpG1r7l/US88Ym13ylb6ox6cXND3iqkgEK54i0gYGO0kXCyJ5NIWonXohLM6cGJ7HEmPhyQ+JBA9iffYh62FD47mceBITGexHL8Ud6CwhIZJA4Mf6Q4Y9jc4owknYjBH6UDMUPaW8K/gKt9q6NPfKIsJ1VKXQX364kPQECm7M1NSHXdJsByzoeT7lbXz/a60Yl3eyHp8aQcAsl69DrZBU8cZBPT/h3NOrkmu1rylZ4Tb77g8sCOgCPgCGw7Ak68246hx+AIOAKOQL4QcOLNF1we2BFwBByBbUfAiXfbMfQYHAFHwBHIFwJOvPmCywM7Ao6AI7DtCDjxbjuGHoMj4Ag4AvlCwIk3X3B5YEfAEXAEth0BJ95tx9BjcAQcAUcgXwg48eYLLg/sCDgCjsC2I+DEu+0YegyOgCPgCOQLASfefMHlgR0BR8AR2HYEnHi3HUOPwRFwBByBfCHgxJsvuDywI1CwCMQ3jMV37+b0hjJeCcmR/dWOvIs30YHllsIVbAk89rwg4MSbF5S2MQzviuV9s4mvPuS1hXzi+2vzkwQv/t6a+0iDNKM3iy295SqveYll2pZ4iCMeOb1NLOaXMPH9wnnNX1EMh1cJ3pfLi8shznVZbxmDVCMp82J0XnKOX7VIzOG9yronPet+iHuNwnGUUbhEQi6KuBS3PDvxJqFGozcGXvAdX+bNObwl4G0iP44Y6UB4hsArQ37ui8WE/KNni+jHLT8QQISUA48Z0VlmInnmJ67ojQO/b+QFbxaJ5Eta5BcnnuCEZ4mtHXDyk6/CCBtJ83m5XYJ895LD0qfk766vfOfV10vto7oto0H3AfnSWyhPHjfL4wYvO+fetcLpjvHjrb68U3BPmvC6S77sIN0r9eL09Xp5PGH8SA0EnHgLuB4glPHqEGeccUZwt37yyScH9YFPM/yJ4ZgRv2jxwDUO17kvUQlGcsOl+y233BLcu+MFAhXIPajg6M04xhGJnjDRMwV+1PD8iz8y3OxAnvE+SA5CjwfkyoEninjgG23s2LHBsSQ+4XBfhP+2OAiQDulxT6LHCLxGUCbINLzMW+EYeHBLj380/LydeOKJgVyjh4mIE/7VyAuujnBZVByVL0oVb8C3y9Ho5XJX9La8Rb8gH3OXyg8eqvZhke1IuYKqpvrBxc8kuWqargELJYxPtj/Ly3MdYf6InKkuUHsgrpfkrRgSnyNXSu1U1yfJ6SeHu/0p4E6fh+idePMA0rYEgWjwIQZZ4c0X4uX/K6+8Es5BIhAejh4hogMOOCD8x9MvhAOhQkx4zIV48LmGR92PP/443ItDSPyc4UkYQkUR4mgS0po0aVLwuosLIRw+onSjk0p8rEUnlb+og5ImZAmx44KeeyBVlOYHH3wQzuNkE0/EN954o91zzz3BMSWu5CFFnHRSrkMOOSQoV/K/UB5w582bF5xR4i8NN+9ffvllKAdOMocOHRq8LjMo4aqdOM4555xQLspNvij3TTfdFPKEA0/ix8VPUfGjlte2U0rK9FMNahgH9tXg01del49QvVfVYLVKJNpEmKJu3xEhY2J4SHWDSSJ4ntD5VcJskdrPxaoTXMDjfbiS6g6TRBXNUPjN4c4t81ojBRvOibdg8Q2xQ4Z4G547d27wlAshQRw4Z4S0br755qCKcVUDMeG4EieRXJ85c2YgUdQtrtJRqhA0ShkHjy+99FIgQbwE44od8hw9enQgeOLA9xqOIVHMkC0OIiHy119/PRAl6pnfqGTI9l//+lfw+otnZOIlv0888UTwIsxgER1K4lYdciVe1DuKlfx/+OGHQY3jYJP4SGPEiBHBxTvxtZUyw7syeWLgwQ09ypt4IVZUL2WAeBl48JlWv379QC4MDtEhZnEiXlQrzi3/O2OG7aOBbJHq4kfV1V3yNr0xyzxwhAaukiJQ1OwQ1cmP8iIMEVcUTpgWqurafRpox2qgPa5pU2snH3ofQ+RqO+31mzRwpllW4Z18k9Dpc0nCiTcJdcC0GuKCTN58881AIhAQpAvhovSOOuqoQFQPPfSQNW/ePKhYCO/ee+8NahOCxNMvChHFd9tttwUPungIxs05Cjg6d8QE0KlTp+D48YEHHgi/Ieum6pC4VsdMgPpdIhfhcWCIU/99993XHnvsMbvmmmvsiy++CCr6qquuCm7SSYM8oz579OgRXNOjSFHBkDKDA+E+/fTToMxRqpgxBgwYYFOmTLFZs2YFRU9+GBBmiGgYkDhQxNhyyRPlI+zTTz9tHeVpFyLGBAFBYyq54IILfuepOAlVWKBJYA6YIbPBGA2KA0S2bwiXFsIAL8J4EObAiWVJke4PGozqSNGikJfo/yMi247C5XDV7f2q10GaDQ0WMY9XOMi5p3AboAGyo7wSdxepQ8BuaijQ6sxT5E68eYJp2wJFx5aQJETKVLxfv37BxguRMZ2PdkuIC4+/hMEmiqKElDBZQNzReSPnoy0Y0iSOaBs96KCDArFBhA0aNNjspZh7CUP46AGYkmG3RVli34XgOCA7wpIvrnHwjeJEHUfPw8TFfXxQ9tGGi9t1FHD0mIxbecgc8wfKlsGH+OPBfQwU0ZZNvMtEHPyPu0KID2Imzq1ZWNy2Wiy4u9NU9vc16JRXHbZQvf9Fg9kFMg2FxcW4M0F1P0pmmynC5KFu3ayHZi1r1XZG6hwqlgOVDPE+Lrf2z2kGskCD7Q2aSVwxapRd3aGDVdcgGHc6FFxpPOa8IODEmxeUtkMYCAt1d+uttwaS3G233YKiZWENBYgtFlVKuJpSOhAPBBNdocetaNwL+aB4m2mxBBLs27dvsPFiwsCcAKmiDiNxJmY/Ei6KG2WMksbWyqJVoudjCBfVColj1sCEgI32z3/+c7ANDx8+POQXOy82Z8oFMULOKGrCk2fKQJ4hXEwLffr0CSqaa5A8aj6SPwMFapd8M0M477zzggmFwSnanrEvUzbSLg4HpLtS5X1XxItLdhbNVgr7g2VewfzAwcLbdNXvddql0EFl76JBbbXayfdStfOFQy0RKnj+R6amOsJ/msI+/uOPdp7I+y2Zql6Vgm6ogXhg1iLotmz/Kw6Yp0IZnHgLuBYgxlatWtmll14aiOnuu+8OSgZSu+SSS8JCE6aF1157LZDo6aefHojlsssuC52JxSQOlF///v2tbt26YXGLaTkLVzfccIN1kJq5+uqrgxkDojv88MMNxUmaKNdI3lzD9ouiRkVzHZMDdmOIDhUJyUF8RxxxRLgXxTxkyJDNaUHYF154YQiLDRnzBYPIq6++GtKBgLE9E4Y80MlR9wwwmFKwC1900UV29NFHB5KGhCFySBkswCgOOihgyog9GfMG+SdPxcl7cBjshNvZwqeN6gXSRdE2EFFiZgBn9vQ+I1PNCl17QItqKOO7ZKJ6Wuf20WC1s3BaKCKeJxI+TiaqCRqYWWBj90NDYXyy6miMBuU5wrm28It7gwu46Xv0f4CAE28BNw+UI4QDgUXVS2dDsaH++EbloSQ5CB93JhAeOy4HpMzuAEgRpRsPwhIO4oSsYxzEw+4GiDSaJ0iX3QTcw/UTTjhhczxxsYqOTp5Q4VEdn3nmmSEc90GKqOA43Sc/DAqXX355IAni4Ry25KhKu2vqyznIlkW2+AAHM4CJ2ib1ySefhLQYZMJGf30ID2aQ+vPPPx8W2tjBwaBUnBbWsLeW1kD8J5kOIGCOXTQos0uBIxCzPkeJUE9UvTeTKWKd6qE7ZiSRM8SLjRhzw0DVbQ2pX8j7BIWtKvNPOdUN5gXMEOUUhrj8KHwEnHgLuA4go0iOJAVJxiP+hhgjmcRpYLwG4cYj7qtNJMkYHkKMNtPscSQWMXGKnpiXxDDkOTFdwnFuS/Em2lxzCpOY78R4sGND6phJUO2YGigHB5iwMMfCHmqXg8ElqvcCrrakRg8VRqIl4XXZHnSAjltL1XKgggnPwtseGtAzFJbwbBtrygMoItaKIlyeeuM39VFBhNtVYbnXF9aSWrVbTMyJNzXqYTOp5Sc72W11BWm7yy3u3K7HciWGg7AxufDhyK5kIVkWFDHVxOtRvecHp+IQNpGMw5NqWYtulI3/kPHmMKjkbIXOTAhfHPAo6mVw4i3qNVjE85+b2SDuiijixfTsOwK/Q8CJ1xuEI+AIOAJJRsCJN8mAe3KOgCPgCDjxehtwBBwBRyDJCDjxJhlwT84RcAQcASdebwOOgCPgCCQZASfeJAPuyTkCjoAj4MTrbcARcAQcgSQj4MSbZMA9OUfAEXAEnHi9DTgCjoAjkGQEnHiTDLgn5wg4Ao6AE6+3AUfAEXAEkoyAE2+SAffkHAFHwBFw4vU24Ag4Ao5AkhFw4k0y4J6cI+AIOAJOvN4GHAFHwBFIMgJOvEkG3JNzBBwBR8CJ19uAI+AIOAJJRsCJN8mAe3KOgCPgCDjxehtwBBwBRyDJCDjxJhlwT84RcAQcASdebwOOgCPgCCQZASfeJAPuyTkCjoAj4MTrbcARcAQcgSQj4MSbZMA9OUfAEXAEnHi9DTgCjoAjkGQEnHiTDLgn5wg4Ao6AE6+3AUfAEXAEkoyAE2+SAffkHAFHwBFw4vU24Ag4Ao5AkhFw4k0y4J6cI+AIOAJOvN4GHAFHwBFIMgJOvEkG3JNzBBwBR8CJ19uAI+AIOAJJRsCJN8mAe3KOgCPgCDjxehtwBBwBRyDJCDjxJhlwT84RcAQcASdebwOOgCPgCCQZASfeJAPuyTkCjoAjkHLEW7JkSduwYYPXjCOwwyOQVqKEbRQKfNL0ydzIr/8d8Tpn+J2R0G9K6Fy6+hLficd6xcEn3sN963QfZ0pnhed/PLifa+kKR3xr1q8Pl+L5/FRSScVRRnFQjsS8EgfXSuqblMnHWqVDeuR1Q7Zy5yfNVA2bUsQL4W4UyGXKlLF169alKmaeL0egwBGAiCAfiKdMWpotz8wM35zngAghQf5lKMw6/a6mfhNJFbJasGZNCBPpGpKtWKqUlcuKZ1lGhi1SmKaVKlnp9HSbtXJlSLNp5cqWkUWwgbx1H+HmrF5tbatWDekTPwSdV1IMg4TuGbtwodUrX95qlSsX0gokrmsrlZdQLqX349Kl1lx5IP/8r6Q85zWdAq+Y7ZRAyhBvuip+8eLF9uCDD9r+++9ve+21l2WoMlDAmWp0fjgCOwoCkCsi5IaxY6177dqBLN/57Te7fpddAglF8v3L119br512spoi3AcnTbIH99zT6ojQIKlfRaKXjx5tq9R3uB/Sm792rR3VqJFd2KZNINr7J0ywH5cts1t23dV+W7LEHv/pp0C+1+t/FV0n/BRdJ81hc+aEPNyka6hVlOuetWpZzbJlN5P9luqnlMKWEtk/qjxepjz1qlPHBvXoEQYK8ldOaY2YO9c+UPzHNG5sV44ZY4937243ffut/bltW+uqdAhXnI6UId71Gv2qV69ujQX8ww8/bF27drXVGmFXrVplVTXKMirmdhCkTKk0W78eBbDh/02zcrvfrzsCqYAAynbMokU2+Jdf7NCGDe2ZKVOCaq1UunSYjkNkd44fb69Nn27ntGplO4lsp69YYfdNnBhINF33o3RHLVhghzZoYK2rVAnkOGjqVJskNVla15dITQ6dPdt6i7jvFyGOFPFNUxwrRHBXjRplR6ofMuV/VveQ5mz1xeki5Xt++CGYAxpVqGBt1C/rSr1u3IJpELInDkwLD4rkByrPtyl/Q2bMsFOGDbOHNFA0kbIdr7K+orK8/+uv9pv6+9Tly0PYT0X2DZUOA0cLVHgxMkGmDPFSSahb1O6rr74aVO64cePs888/t4svvjiYH7Zk+4Vwy4pwS5QsYWOnLhThlrC2japapsjXD0egqCFQQv3gdZFTa5FNbSnKsSKmm0VYZaQMl4swr1W/eGTyZLt7992tfbVqwczwlw4d7DIRJsrwhk6dghkAwp0gooVQ6V/0Bkh6pcIMEpl/q3hXaFbZpGJFO6NlS3tu2rRAsMc3bWrdpTLLKj1U6BrFBZHPU9oo6vn67qbrLWSiiPbf7Bgjk9JE8BOkpK+TMv9aaV2rPBLnNfqGwPt88IFdJxXfSWWoqPMMCK+p3GuVvxeUF9Q86h3CzV12Fa1aThniBTbIFnVbr169QL69e/e2mjVrhgqk4eR0UCFMvX6avcwGfTLVXv1yug08o6t1alnbSq8vXtOTotW0inlus5ggI2OD7KHbb4DHprlCU3yI97yddw6qtbxICZMDwmOVCBDbbAeR1dtSiC9LFaMqN6oPoArLqq98NGuWPSOlulzhsP+G6/qGNEfMm2c3y4TRpUYNaynixHbcT6RLeJRpdQmcobq/s2afKO/vZP47pXlzW6w8YeM9Vkr4bqnXGVK/EPCt331nC3QNm3PiQVz1pYZ3UzqVpdSf3Wcf6yEibfPaa3anZrOv9+ljN8uUME3qlrTmKe69VEYU+D2K/ySRPwPDapWXfOfc+4tuG0sp4qVhVdTo26xZM3v//fftmGOOsYaaamFy2BLxlk5Ps7e+nmnnPjTS5k5bZFUbVbFvf15kk35bapkbilt1Fd2GVtxyHttjz3Y72a5Nq2+3tobqg/ggun0lQP4qe2dP2URZjFojkqysafddUrozRXzXffONfa3Fqoe6dQtmh1IC+fbOnW2WCLGqCPQfIrapUrzdRWIoYAi4sfoXBMgC2xIRc6bOT5Qqnat71qIsWZRT2hVE9theW4nMh4jcMTOgjkkTIsXUgMljZ6nqOloIZ/Es8cC0UVXhetetaycqfQYU4uceFHo5XcNeTA9loCAvB9avH8qNuYMFOIaz8SJ+zCg1pPyL05FSxIuynT9/vo1RYxs4cKBN0XTo+++/t8MPP9xKq6JyMjXQcNo1rGpn9dGo/cGPtnBNprWsV9k6Nq6mKcv2UyLFqdK9LNsDgY0SA2a1quS+uJTX1CJ1Pa9p9p5Sf6z6ozivbt8+REFrhqgqqC+0VF+ZpoWvM1u0sONk54WcvlLfYS0Ec0IDESP/ayvsahEZxPel/jN1v7JjR3tDZIrixYbKVB6Cw+ZaReEv+vJLmyMibqs83LrbbnaJ/nMsEcFy/Qgt0J3XunVQ15dq8UuJ5lxEpUUZUL+ZCdvQNhVmQzgPEUPaTTUgfCwC/u/MmZapdM774ouQTnWlh2mkuB0pRbylNJov0vRipUbXOhrlJ2qx4J133rFDDjkk2HhzOlC1jWtXtFv7drGz9t/ZHnh7QgjWChvvuk3bVfxwBAoKAdrfhu00s4KEZqvtfyMV+08RHjsJWkpxdpa5DbXIgWr9USR5/siRwUxwsBbPRoisULyQNcSbofOoyitF2CyMzdKCFeT7V6lViBs1WkP9CdMEux8wG2Ab/l7xooQhS6j0CU35b5Y9mWl/GylbFu/YOXHWiBFhQECxYkf+o0WvOOeMOzEIG7eGRftta5kXMWN8K7PKLjI7XN2und2ptJeK/I/QjLet0kBgFacjZYgXtbtc9p7777/f2qvBlNOoXV9TjxNOOCH83uLCmmojQ8o2U58mtSvYXf12txWrM7QbYtO+QD8cgaKCAAoQFTlEaxso1o4ioWOaNAmKcH3WAhPk/I5suxDaG/vua0/JNvum7MH1FP5UmegIF8kO8sR08ZF2LzyinQtpuvdCKVXIebbImMWyg9TH2spePEsKc7h2NhA/27wg4AUiQ7ZzXarFsNd//jnsLthdZorBPXvavSLGRTIL5PdBCkwI2KyZLnAv6X2hdO9TfNh4L9JWt5Yq914SXizADdQHW/NhIuD48EZRqc8/ymfKEC+ZxJbLroYe2uPHQhu23tZqKNjTtmTjjYWjsa2RwmXWk56mp9+K4dMuxaHBeRm2jABtllV/VCQKl8UpyCk+SUYbR7meLvPC2TIvYIe9WER1hv5jXmC/bVTGpIKyJTxT9t21CwGVW0u20jWayh+uc8epf3HwsMTgXr2svsibRTK2dLHLoCsL2yJG9tOzuNdBynS1yHZnfT/MPnvlMTG9P6rb2B//LXs09uf4YAfKfD/ZsnvKFswiGnleqTTYpnbHHnuEGQDEGx+2KC7tJ2WIl328lTX1Oeqoo8JTa1Q2poe8kG5iZcC3ouniUj9ejh0MAdo7K/kcOYmHYOMVKULIccUfFYlaTnzUN1GQQMjsVohT+xj3avUx4iOuRrKxQqTrFE89EWB4Go7pPaYBXWdRD+KGMIMpIutJtPxWTxPZlTEbkN+ollHSmCIYJGJ+Qhr6xAc0ipuQShnipQJpdDwwwbG1FZvfhuDhHYGihkB8LDioVZFYbka18H6GLDJPJOTE34mKcm222SIEmT2O3GagW8J082PCCQES3x/xOxGVVb6iVj95yW9KEW9eMuxhHAFHwBEo6gg48Rb1GvT8OwKOQJFDwIm3yFWZZ9gRcASKOgJOvEW9Bj3/joAjUOQQcOItclXmGXYEHIGijoATb1GvQc+/I+AIFDkEnHiLXJV5hh0BR6CoI+DEW9Rr0PPvCDgCRQ4BJ94iV2WeYUfAESjqCDjxFvUa9Pw7Ao5AkUPAibfIVZln2BFwBIo6AoF48+JIsqgX1PPvCDgCjkBhIxC5Np3XL67Q2+v9cAQcAUfAESh4BHhh0f8Bn9C8yolJTuUAAAAASUVORK5CYII=)

成员包含数据成员和函数成员

以下实例我们使用关键字 **class** 定义 Box 数据类型，包含了三个成员变量 length、breadth 和 height：

```cpp
class Box
 { public: double length; // 盒子的长度
double breadth; // 盒子的宽度
 double height; // 盒子的高度 };
```

关键字 **public** 确定了类成员的访问属性。在类对象作用域内，公共成员在类的外部是可访问的。您也可以指定类的成员为 **private** 或 **protected**。

对象是根据类来创建的。声明类的对象，就像声明基本类型的变量一样。

**访问数据成员**

类的对象的公共数据成员可以使用直接成员访问运算符 **.** 来访问。

需要注意的是，私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问。

![img](data:image/png;base64,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)

类名 对象名；

类名 对象名=初始化表达式

类名 对象名 （初始表达式）

类名 对象名 {初始化表达式}

类名 对象名列表


对象。数据成员们

对象. 函数成员（是餐标）

## 类的成员函数

是指那些把定义和原型写在类定义内部的函数，就像类定义中的其他变量一样。类成员函数是类的一个成员，它可以操作类的任意对象，可以访问对象中的所有成员。

成员函数可以定义在类定义内部，或者单独使用**范围解析运算符 ::** 来定义。在类定义中定义的成员函数把函数声明为**内联**的，即便没有使用 inline 标识符。

也可以在类的外部使用**范围解析运算符 ::** 定义该函数。

需要强调一点，在 :: 运算符之前必须使用类名。调用成员函数是在对象上使用点运算符（**.**），这样它就能操作与该对象相关的数据。

**::** 叫作用域区分符，指明一个函数属于哪个类或一个数据属于哪个类。

**::** 可以不跟类名，表示全局数据或全局函数（即非成员函数）。


C++中函数调用非虚成员函数、调用虚函数的区别：

1.调用非虚成员函数：和调用非成员函数一样，通过对象确定对象所属的类，然后找到类的成员函数。此过程不会涉及到对象的内容，只会涉及对象的类型，是一种静态绑定。

2.调用虚函数与调用非虚成员函数不同，需同过虚函数表找到虚函数的地址，而虚函数表存放在每个对象中，不能再编译期间实现。只能在运行时绑定，是一种动态绑定。

## 访问控制

```cpp
class Base {
public: // 公有成员
protected: // 受保护成员
private: // 私有成员 };
```

**公有**成员在程序中类的外部是可访问的。您可以不使用任何成员函数来设置和获取公有变量的值。

**私有**成员变量或函数在类的外部是不可访问的，甚至是不可查看的。只有类内和友元函数可以访问私有成员。

默认情况下，类的所有成员都是私有的。如果您没有使用任何访问修饰符，类的成员将被假定为私有成员：

**protected（受保护）**成员变量或函数与私有成员十分相似，但有一点不同，protected（受保护）成员在派生类（即子类）中是可访问的。

在下一个章节中，您将学习到派生类和继承的知识。现在您可以看到下面的实例中，我们从父类 **Box** 派生了一个子类 **smallBox**。

下面的实例与前面的实例类似，在这里 **width** 成员可被派生类 smallBox 的任何成员函数访问。

**继承中的特点**

有public, protected, private三种继承方式，它们相应地改变了基类成员的访问属性。

- 1.**public** **继承：**基类 public 成员，protected 成员，private 成员的访问属性在派生类中分别变成：public, protected, private
- 2.**protected** **继承：**基类 public 成员，protected 成员，private 成员的访问属性在派生类中分别变成：protected, protected, private
- 3.**private** **继承：**基类 public 成员，protected 成员，private 成员的访问属性在派生类中分别变成：private, private, private

但无论哪种继承方式，下面两点都没有改变：

- 1.private 成员只能被本类成员（类内）和友元访问，不能被派生类访问；
- 2.protected 成员可以被派生类访问。


**总结一下三种继承方式：**

| **继承方式**  | **基类的public成员** | **基类的protected成员** | **基类的private成员** | **继承引起的访问控制关系变化概括**     |
| ------------- | -------------------- | ----------------------- | --------------------- | -------------------------------------- |
| public继承    | 仍为public成员       | 仍为protected成员       | 不可见                | 基类的非私有成员在子类的访问属性不变   |
| protected继承 | 变为protected成员    | 变为protected成员       | 不可见                | 基类的非私有成员都为子类的保护成员     |
| private继承   | 变为private成员      | 变为private成员         | 不可见                | 基类中的非私有成员都称为子类的私有成员 |


## 构造函数和析构函数


C++ 类中 2 种特殊的构造函数 , 分别是 :


默认无参构造函数 : 如果 C++ 类中 没有定义构造函数 , C++ 编译器会自动为该类提供一个 " 默认的无参构造函数 " , 函数体为空 , 不做任何操作 ;
默认拷贝构造函数 : 如果 C++ 类中 没有定义拷贝构造函数 , C++ 编译器会自动为该类提供一个 " 默认的拷贝构造函数 " , 在函数中对成员变量进行简单的复制操作 ;
类的**构造函数**是类的一种特殊的成员函数，它会在每次创建类的新对象时执行。

构造函数的名称与类的名称是完全相同的，并且不会返回任何类型，也不会返回 void。构造函数可用于为某些成员变量设置初始值。

**带参数的构造函数**

默认的构造函数没有任何参数，但如果需要，构造函数也可以带有参数。这样在创建对象时就会给对象赋初始值，如下面的例子所示：

**使用初始化列表来初始化字段**

使用初始化列表来初始化字段：

```cpp
Line::Line( double len): length(len) { }
```

上面的语法等同于如下语法：

```cpp
Line::Line( double len) { length = len; }
```

但是要注意，外面先的length(len)和里面函数{}有先后顺序，先外后内
所有相同的类只有一份

可以设置默认参数

| **场景**                              | **成员最终值**                                         |
| ------------------------------------- | ------------------------------------------------------ |
| 类内默认初始化 + 无构造函数初始化列表 | 使用类内默认值（如 **hour=1**）                        |
| 类内默认初始化 + 构造函数初始化列表   | **构造函数初始化列表优先**（覆盖类内默认值）           |
| 无任何初始化                          | 成员为未定义值（基本类型）或调用默认构造函数（类类型） |

如果没有提供实参，则对象建立会自动调用无参构造函数

此时，这个无参构造函数可以叫做“默认构造函数”，不过，这个是编译器自动合成的一个无参构造函数

因为你也可以调用

如果提供了实参，对象会利用有参构造函数


如果没有提供任何构造函数，编译器会自动合成一个无参构造函数

无参构造函数会逐个完成类数据成员构造；对于类型为内置的数据类型、指针型的数据成员，构造时未进行初始化，也就是数值是不确定的，但存在内存，无初始化，结果具有不确定性；

对于类型为其它类类型的数据成员，会调用其他类类型的无参构造函数来完成初始化；对于数组类型的数据成员，它会执行每个数组元素对象的构造

对于类类型的数据成员。

无参构造函数会逐个完成类数据的成员构造；对于类型为内置数据类、指针数据类型，构造时未初始化，也就输数值不确定；对于其它类类型的数据成员，会调用其它类类型的无参构造函数；对于数组型数据成员，对每个数组元素对象的构造；

内置数据类型和指针类型的析构无实际动作，数组类型的成员会执行每个数据元素类型对象的析构，类类型的数据成员会执行相应类的析构函数；

对象指针本身是指针类型，不是对象，建立的时候也就不会自动建立所指类对象，不会调用构造函数；指针变量撤销时候也不会调用类的析构函数；

**1. 默认构造函数的定义**

在 C++ 中，**默认构造函数**是指 **可以不传递任何参数直接调用** 的构造函数。它可以是：

1. 无参数的构造函数：`Clock() {}`
2. 所有参数都有默认值的构造函数：`Clock(int h = 0, int m = 0, int s = 0) {}`
也就是说，所谓“无参构造函数”，是默认构造函数的一种

|      | **默认构造函数** | **无参构造函数** |
| ---- | ---------------- | ---------------- |
|      |                  |                  |


| 定义 | 能在无实参调用时使用 | 没有任何参数 |
| ---- | -------------------- | ------------ |
|      |                      |              |


| 示例 | Clock(int h = 0, int m = 0, int s = 0) | Clock() |
| ---- | -------------------------------------- | ------- |
|      |                                        |         |


C++提供专门用于构造韩素华的初始化列表机制，以冒号开始，逗号结束

C++支持对象的初始化，统一的大括号形式的初始化

内置数据类型变量采用明确的函数调用但没有给实参时，变量初始化为0

C++11支持类的一个构造函数可以在构造函数的初始化列表里委托类的其它构造函数完成初始化

```cpp
Cclock::Cclock():Cclock(0,0,0){}
```

 支持类数据成员定义时初始化，类声明里可以用=或大括号形式初始化

构造函数初始化列表里指明的数据成员构造则放弃定义时初始化


1、默认无参构造函数


如果 C++ 类中 没有定义构造函数 , C++ 编译器会自动为该类提供一个 " 默认的无参构造函数 " , 函数体为空 , 不做任何操作 ;
没有定义构造函数 : 如果 没有为 C++ 类定义 构造函数 , C++ 编译器 将自动为该类 生成一个默认的无参构造函数 ;
定义了构造函数 : 如果为 C++ 类 定义了其他类型的构造函数 ( 有参构造函数 / 无参构造函数 / 拷贝构造函数 ) , C++ 编译器 将不再自动生成默认的无参构造函数 ;
默认构造函数内容 : C++ 编译器 为类 定义的 默认无参构造函数 , 其函数体为空 , 如下代码所示 ;

```cpp
class MyClass {
public:
  int x;
// 默认构造函数
  MyClass() {
  }
};
```

下面的代码 , 会自动调用 默认的 无参构造函数 ;


```cpp
MyClass obj; // 调用 默认 构造函数
```

1

2、默认拷贝构造函数


" 默认拷贝构造函数 " 用于创建一个新对象作为现有对象的副本 , 其作用是将 现有对象 的成员变量 复制到 新对象中 ;


创建一个类对象 并将其 赋值给 另一个类对象时 , 会自动调用 默认拷贝构造函数 ;


如果 C++ 类中 没有定义拷贝构造函数 , C++ 编译器会自动为该类提供一个 " 默认的拷贝构造函数 " , 在函数中对成员变量进行简单的复制操作 ;
没有定义拷贝构造函数 : 如果 没有为 C++ 类定义 拷贝构造函数 , C++ 编译器 将自动为该类 生成一个 默认的拷贝构造函数 ;
定义了拷贝构造函数 : 如果为 C++ 类 定义了 拷贝构造函数 , C++ 编译器 将不再自动生成默认的拷贝构造函数 ;
默认拷贝构造函数内容 : C++ 编译器 为类 定义的 默认拷贝构造函数 , 在函数内部将 现有对象 的 成员变量 逐个赋值给 新对象 ;

```cpp
class MyClass {
public:
  int x;
// 默认拷贝构造函数
  MyClass(const MyClass& other) {
    x = other.x;
  }
};
```

下面的代码 , 第一行代码会自动调用默认的无参构造函数 , 第二行代码会自动调用默认的拷贝构造函数 ;


```cpp
MyClass obj; // 调用默认无参构造函数
MyClass obj2 = obj; // 调用默认拷贝构造函数
```

1、构造函数规则说明


构造函数调用规则 :


提供 默认无参构造函数 和 默认拷贝构造函数 : 如果 C++ 类中 没有定义 构造函数 时 , C++ 编译器 会提供 默认的 无参构造函数 和 默认的 拷贝构造函数 ;
提供 默认拷贝构造函数 : 如果 C++ 类中 , 定义了 非拷贝构造函数 , 如 : 有参构造函数 / 无参构造函数 , C++ 编译器 不会提供 默认的无参构造函数 , 但是 会提供 默认的 拷贝构造函数 ;
默认的 拷贝构造函数 只能进行 成员变量的 复制 ;

特例 : 如果 C++ 类中 , 定义了 拷贝构造函数 , 那么 C++ 编译器不会提供 默认的无参构造函数 ;
2、代码示例 - 只定义拷贝构造函数


下面的代码中 , 定义了 拷贝构造函数 , C++ 编译器不会自动生成 默认的无参构造函数 和 默认的拷贝构造函数 ;
使用 Student s; 代码 创建对象 , 报错 “Student”: 没有合适的默认构造函数可用 ;
说明 C++ 编译器没有为该类生成 默认的无参构造函数 ;
下面的代码中 , 定义了 有参构造函数 , C++ 编译器不会自动生成 默认的无参构造函数 和 默认的拷贝构造函数 ;
使用 Student s; 代码 创建对象 , 报错 “Student”: 没有合适的默认构造函数可用 ;
说明 C++ 编译器没有为该类生成 默认的无参构造函数 ;

```cpp
int* p = new int[3](); // 值初始化：p[0]=0, p[1]=0, p[2]=0
```

- **()** 直接作用于 **int** 元素，触发清零。

场景    new T[n]() 的行为 内置类型成员状态

直接分配内置类型数组   所有元素值初始化为 0    不适用

分配类对象数组（默认构造）  调用默认构造函数，但不管内置类型成员是否初始化  未初始化（随机值）

分配类对象数组（显式初始化）   成员初始化为构造函数指定的值   初始化为确定值

根本原因：

值初始化（()）的粒度是 对象本身，不会递归处理对象内部的成员变量，除非构造函数显式初始化它们。

```cpp
  Clock() {} // 默认构造函数
  ~Clock() {} // 析构函数
```

提供了默认构造函数Clock (){}
Int \*p=new Clock也会为脏数据

如果没有显示的默认构造函数

会调用编译器自动构造的默认无参构造

此时int类型的话Clock \*p=new Clock（）会为0

如果只是单纯的在栈上开辟空间

Clock p

那么都为脏数据

**一、四种构造场景对比表**

| **场景**                             | **代码示例**                    | **内置类型成员状态** | **类类型成员状态** | **标准依据**         |
| ------------------------------------ | ------------------------------- | -------------------- | ------------------ | -------------------- |
| 显式空构造   **Clock() {}**          | **new Clock**   **new Clock()** | 未初始化（脏数据）   | 调用其默认构造     | [dcl.init]/7         |
| 隐式合成构造   (无用户定义构造)      | **new Clock**                   | 未初始化             | 调用其默认构造     | [class.default.ctor] |
| 隐式合成构造   (无用户定义构造)      | **new Clock()**                 | 零初始化             | 调用其默认构造     | [dcl.init]/8         |
| 带成员初始化   **Clock():hour(0){}** | 任意创建方式                    | 按指定值初始化       | 调用其默认构造     | [class.base.init]    |
|                                      |                                 |                      |                    |                      |


- **new Clock**：调用隐式合成的默认构造，不初始化内置类型
- **new Clock()**：触发值初始化（zero-initialization）
  - 先对所有成员进行零初始化
  - 然后调用隐式默认构造（但对已零初始化的内置类型无影响）

POD 类型（plain old data 类型的类）行为略有区别：

表达式  行为

new Clock   默认初始化（成员变量未初始化，脏数据）

new Clock()  值初始化（成员变量先被零初始化，再调用默认构造函数 —— 但此时默认构造函数是空的）


**类的析构函数**

类的**析构函数**是类的一种特殊的成员函数，它会在每次删除所创建的对象时执行。

析构函数的名称与类的名称是完全相同的，只是在前面加了个波浪号（~）作为前缀，它不会返回任何值，也不能带有任何参数。析构函数有助于在跳出程序（比如关闭文件、释放内存等）前释放资源。

一个类内可以有多个构造函数，可以是一般类型的，也可以是带参数的，相当于重载构造函数，但是析构函数只能有一个。

一般需要动态分配内存等资源的类需要定义析构函数、显示释放资源

内置数据类型和指针类型的析构无实际动作

数组类型的数据成员会执行每个数据元素类型对象的析构

类类型的数据成员会执行相应类的析构函数

指针不需要析构函数


## 构造函数补充


**1. 构造函数的本质**

构造函数的作用是 **初始化对象**，而不是传值。当创建一个新对象时：

- 构造函数负责设置对象的初始状态
- 参数传递是通过函数调用的常规方式（可以是传值、传引用等）
- **关键点**：构造函数是在对象内存分配 **之后** 执行的初始化操作

**示例说明**：

```cpp
class Clock {
public:
// 构造函数：初始化对象状态
  Clock(int h, int m, int s) : hour(h), minute(m), second(s) {}
private:
  int hour, minute, second;
};
int main() {
Clock c(12, 0, 0); // 1.分配内存 2.调用构造函数初始化
}
```

这里 **Clock(12, 0, 0)** 不是"传值给对象"，而是在对象构造阶段用这些参数初始化其成员。

同时初始化

```cpp
Clock p[2] = {{1, 2, 3}, {4, 5, 6}};
Clock p[2] = {Clock{1, 2, 3}, Clock{4, 5, 6}};
```

Clock \*p = new Clock[2]{{1,2,3},{4,5,6}}; 应该是一样的吧！


## `new[]` 的初始化

New clock[]和new clock[]()的区别

在 C++ 中，这两种写法的主要区别在于**初始化方式**：

```cpp
New Clock[2];
```

 这会对数组中的每个对象进行**默认初始化**。

- 如果 Clock 是一个具有自定义默认构造函数的类，则会调用该构造函数。
- 如果 Clock 是一个 POD 类型（或没有定义构造函数），其数据成员不会被自动初始化，可能包含未定义的值。

```cpp
new  Clock[2]();
```

 这会对数组中的每个对象进行**值初始化**。

- 对于类类型，若存在自定义默认构造函数，依然会调用该构造函数；
- 对于 POD 类型（或没有用户提供构造函数），值初始化会导致成员被**零初始化**（例如整数类型会被初始化为 0）。

如果构造函数中如果没有显式对成员进行初始化，则这些成员可能包含未定义的值。

·    如果是 **new int**，分配的 **int** 是**未初始化的**（值不确定，可能是垃圾值）。

·    如果是 **new int()** 或 **new int{}**，会**值初始化**（默认 **0**）。


## 类的内联函数

**1、引入 inline 关键字的原因**

在 c/c++ 中，为了解决一些频繁调用的小函数大量消耗栈空间（栈内存）的问题，特别的引入了 **inline** 修饰符，表示为内联函数。

栈空间就是指放置程序的局部数据（也就是函数内数据）的内存空间。

在系统下，栈空间是有限的，假如频繁大量的使用就会造成因栈空间不足而导致程序出错的问题，如，函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。

其实，在内部的工作就是在每个 **for** 循环的内部任何调用 **dbtest(i)** 的地方都换成了 `(i % 2 > 0) ? "奇" : "偶"`，这样就避免了频繁调用函数对栈内存重复开辟所带来的消耗。

**2、inline使用限制**

**inline** 的使用是有所限制的，inline 只适合函数体内代码简单的函数使用，不能包含复杂的结构控制语句例如 while、switch，并且不能内联函数本身不能是直接递归函数（即，自己内部还调用自己的函数）。

**3、inline仅是一个对编译器的建议**

**inline** 函数仅仅是一个对编译器的建议，所以最后能否真正内联，看编译器的意思，它如果认为函数不复杂，能在调用点展开，就会真正内联，并不是说声明了内联就会内联，声明内联只是一个建议而已。

**4、建议 inline 函数的定义放在头文件中**

其次，因为内联函数要在调用点展开，所以**编译器必须随处可见内联函数的定义**，要不然就成了非内联函数的调用了。所以，这要求每个调用了内联函数的文件都出现了该**内联函数的定义**。

因此，将**内联函数的定义**放在**头文件**里实现是合适的，省却你为每个文件实现一次的麻烦。

**声明跟定义要一致**：如果在每个文件里都实现一次该内联函数的话，那么，最好保证每个定义都是一样的，否则，将会引起未定义的行为。如果不是每个文件里的定义都一样，那么，编译器展开的是哪一个，那要看具体的编译器而定。所以，最好将**内联函数定义**放在**头文件**中。

5、内联函数最终展开还是传统函数调用由编译器决定，一般限定内联函数不可递归，不可含循环


如果在类内声明的时候加上inline，那么在外部定义的时候就不必加上inline；

但如果在类内声明的时候不加上inline，那么在外部的时候必须加上inline才能作为内联函数；

但直接在类内定义，默认加上inline为内联函数


声明≠定义

**inline 是一种用于实现的关键字**

```cpp
class A
{
  public:void Foo(int x, int y) { } // 自动地成为内联函数
}
```

将成员函数的定义体放在类声明之中虽然能带来书写上的方便，但不是一种良好的编程风格，上例应该改成：

```cpp
// 头文件
class A
{
  public:
  void Foo(int x, int y);
}
// 定义文件
inline void A::Foo(int x, int y){}
```

关键字 inline 必须与函数定义体放在一起才能使函数成为内联，仅将inline 放在函数声明前面不起任何作用。

而如下风格的函数Foo 则成为内联函数：

```cpp
void Foo(int x, int y);
inline void Foo(int x, int y) {} // inline 与函数定义体放在一起
```

---

## 学习导航

- 上一篇：[[计算机系/C++/05 基础数据结构与 POD|基础数据结构与 POD]]
- 返回目录：[[C++ 学习指南]]
- 下一篇：[[计算机系/C++/07 拷贝控制与移动语义|拷贝控制与移动语义]]
