对象数组:
Coordinate coord[3]; 栈区 Coordinate *p=new Coordinate[3]; 堆区
/* * Coordinate.h * * Created on: 2017年7月13日 * Author: rmbp */ class Coordinate { public: Coordinate(); ~Coordinate(); public: int m_iX; int m_iY; }; /* * Coordinate.cpp * * Created on: 2017年7月13日 * Author: rmbp */ #include"Coordinate.h" #include<iostream> using namespace std; Coordinate::Coordinate() { cout<<"Coordinate"<<endl; } Coordinate::~Coordinate() { cout<<"~Coordinate"<<endl; } #include <iostream> #include <string> #include "Coordinate.h" using namespace std; int main(void) { Coordinate coor[3]; coor[0].m_iX=3; coor[0].m_iY=5; Coordinate *p=new Coordinate[3]; p->m_iX=7; p[0].m_iY=9; p++; //第二个元素 p->m_iX=11; p[0].m_iY=13;//输出的是第二个元素 p[1].m_iX=15; p++; p->m_iY=17; for(int i=0;i<3;i++) { cout<<coor[i].m_iX<<endl; cout<<coor[i].m_iY<<endl; } for(int j=0;j<3;j++) { cout<<p->m_iX<<endl; cout<<p->m_iY<<endl; p--; } p++; delete []p; p=NULL; return 0; }
对象成员:
/* * Coordinate.h * * Created on: 2017年7月13日 * Author: rmbp */ class Coordinate { public: Coordinate(int x,int y); ~Coordinate(); void setX(int x); int getX(); void setY(int y); int getY(); private: int m_iX; int m_iY; }; /* * Line.h * * Created on: 2017年7月13日 * Author: rmbp */ #include"Coordinate.h" class Line { public: Line(int x1,int y1,int x2,int y2); ~Line(); void setA(int x,int y); void setB(int x,int y); void printInfo(); private: Coordinate m_coorA; Coordinate m_coorB; }; /* * Coordinate.cpp * * Created on: 2017年7月13日 * Author: rmbp */ #include"Coordinate.h" #include<iostream> using namespace std; Coordinate::Coordinate(int x,int y) { m_iX=x; m_iY=y; cout<<"Coordinate:"<<m_iX<<","<<m_iY<<endl; } Coordinate::~Coordinate() { cout<<"~Coordinate:"<<m_iX<<","<<m_iY<<endl; } void Coordinate::setX(int x) { m_iX=x; } int Coordinate::getX() { return m_iX; } void Coordinate::setY(int y) { m_iY=y; } int Coordinate::getY() { return m_iY; } /* * Line.cpp * * Created on: 2017年7月13日 * Author: rmbp */ #include<iostream> #include"Line.h" using namespace std; Line::Line(int x1,int y1,int x2,int y2):m_coorA(x1,y1),m_coorB(x2,y2) //初始化列表 { cout<<"Line"<<endl; } Line::~Line() { cout<<"~Line"<<endl; } void Line::setA(int x,int y) { m_coorA.setX(x); m_coorA.setY(y); } void Line::setB(int x,int y) { m_coorB.setX(x); m_coorB.setY(y); } void Line::printInfo() { cout<<"("<<m_coorA.getX()<<","<<m_coorA.getY()<<")"<<endl; cout<<"("<<m_coorB.getX()<<","<<m_coorB.getY()<<")"<<endl; } #include <iostream> #include <string> #include "Line.h" using namespace std; int main(void) { Line *p=new Line(1,2,3,4); p->printInfo(); delete p; p=NULL; return 0; }
浅拷贝:
/* * Array.h * * Created on: 2017年7月13日 * Author: rmbp */ #ifndef ARRAY_H_ #define ARRAY_H_ class Array { public: Array(); Array(const Array &arr); ~Array(); void setCount(int count); int getCount(); private: int m_iCount; }; #endif /* ARRAY_H_ */ /* * Array.cpp * * Created on: 2017年7月13日 * Author: rmbp */ #include"Array.h" #include<iostream> using namespace std; Array::Array() { cout<<"Array"<<endl; } Array::Array(const Array &arr) { m_iCount=arr.m_iCount; cout<<"Array &"<<endl; } Array::~Array() { cout<<"~Array"<<endl; } void Array::setCount(int count) { m_iCount=count; } int Array::getCount() { return m_iCount; } #include <iostream> #include <string> #include "Array.h" using namespace std; int main(void) { Array arr1; arr1.setCount(5); Array arr2(arr1); cout<<"arr2.m_iCount:"<<arr2.getCount()<<endl; return 0; }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco }
Array
Array&
arr2.m_iCount:5
~Array
~Array
深拷贝:
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco }
Array
Array &
0
1
2
3
4
0
1
2
3
4
~Array
~Array
时间: 2024-11-06 06:18:59