对象数组

  1. class Coordinate{
  2. public:
  3. Coordinate();
  4. private:
  5. int m_iX;
  6. int m_iY;
  7. }
  8. 栈中创建
  9. Coordinate coor[3];
  10. 堆中创建
  11. Coordinate *p = new Coordinate[3];
  12. p -> m_iX = 7;
  13. p[0].m_iY = 9;
  14. p++;
  15. p -> m_iX = 11;
  16. p[0].m_iY = 12;
  17. for(int i = 0; i<3; i++){
  18. cout << "cout_X" << coor[i].m_iX << endl;
  19. cout << "cout_Y" << coor[i].m_iY << endl;
  20. }
  21. for(int j = 0; j<3; j++){
  22. cout << "cout_X" << p -> m_iX << endl;
  23. cout << "cout_Y" << p -> m_iY << endl;
  24. p --;
  25. }
  26. //堆中创建的对象需要释放内存,且p前面的[]需要加,不然只是释放p的第一个元素内存
  27. p++;
  28. delete []p;

对象成员

  1. class Line{
  2. public:
  3. Line();
  4. private:
  5. Coordinate m_colorA;
  6. Coordinate m_colorB;
  7. }
  8. int main(void){
  9. Line *p = new Line();
  10. }

对象成员有参构造方法

  1. Line::Line(int x1, int y1, int x2, int y2)
  2. ::m_coorA(x1, y1), m_coorB(x2, y2)
  3. {
  4. cout << "Line" << endl;
  5. }

深拷贝和浅拷贝

浅拷贝

  1. class Array {
  2. public:
  3. Array() {
  4. m_iCount = 5;
  5. };
  6. Array(const Array &arr) {
  7. m_iCount = arr.m_iCount;
  8. };
  9. private:
  10. int m_iCount;
  11. };

深拷贝

  1. class Array {
  2. public:
  3. Array() {
  4. m_iCount = 5;
  5. m_pArr = new int[m_iCount];
  6. };
  7. Array(const Array &arr) {
  8. m_iCount = arr.m_iCount;
  9. m_pArr = new int[m_iCount];
  10. for (int i = 0; i < m_iCount; ++i) {
  11. m_pArr[i] = arr.m_pArr[i];
  12. }
  13. };
  14. private:
  15. int m_iCount;
  16. int *m_pArr;
  17. };

对象指针

image.png

对象成员指针

image.png

this指针

通过this指针就可以访问到所属类中的数据成员

image.png

c++在编译的时候为每个成员函数加了一个this指针

返回调用对象的引用

image.png

返回调用对象的指针

image.png

常对象成员和常成员函数

image.png

image.png

常指针与常引用