C++初步 2

时间:2023-03-10 00:31:39
C++初步 2

对象数组:

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[];
coor[].m_iX=;
coor[].m_iY=; Coordinate *p=new Coordinate[];
p->m_iX=;
p[].m_iY=; p++; //第二个元素
p->m_iX=;
p[].m_iY=;//输出的是第二个元素 p[].m_iX=;
p++;
p->m_iY=; for(int i=;i<;i++)
{
cout<<coor[i].m_iX<<endl;
cout<<coor[i].m_iY<<endl;
}
for(int j=;j<;j++)
{
cout<<p->m_iX<<endl;
cout<<p->m_iY<<endl;
p--;
} p++;
delete []p;
p=NULL; return ;
}

对象成员:

/*
* 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(,,,);
p->printInfo();
delete p;
p=NULL;
return ;
}

浅拷贝:

/*
* 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(); Array arr2(arr1);
cout<<"arr2.m_iCount:"<<arr2.getCount()<<endl;
return ;
}

Array

Array&

arr2.m_iCount:5

~Array

~Array

深拷贝:


Array

Array &

0

1

2

3

4

0

1

2

3

4

~Array

~Array

对象指针:

/*
* 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;
} /*
* demo.cpp
*
* Created on: 2017年7月13日
* Author: rmbp
*/
#include<iostream>
#include<stdlib.h>
#include"Coordinate.h"
using namespace std;
int main(void)
{
Coordinate *p1=NULL;
p1=new Coordinate;
Coordinate *p2=new Coordinate();
p1->m_iX=;
p1->m_iY=;
(*p2).m_iX=;
(*p2).m_iY=;
cout<<p1->m_iX+(*p2).m_iX<<endl;
cout<<p1->m_iY+(*p2).m_iY<<endl; delete p1;
p1=NULL;
delete p2;
p2=NULL;
return ;
}

Coordinate

Coordinate

40

60

~Coordinate

~Coordinate

对象成员指针:

/*
* Coordinate.h
*
* Created on: 2017年7月13日
* Author: rmbp
*/ class Coordinate
{
public:
Coordinate(int x,int y);
~Coordinate();
int getX();
int getY();
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(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;
}
int Coordinate::getX()
{
return m_iX;
}
int Coordinate::getY()
{
return 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 printInfo();
private:
Coordinate *m_pCoorA;
Coordinate *m_pCoorB;
};
/*
* 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_pCoorA=new Coordinate(x1,y1);
m_pCoorB=new Coordinate(x2,y2);
cout<<"Line()"<<endl;
}
Line::~Line()
{
delete m_pCoorA;
m_pCoorA=NULL;
delete m_pCoorB;
m_pCoorB=NULL;
cout<<"~Line()"<<endl;
}
void Line::printInfo()
{
cout<<"printInfo()"<<endl;
cout<<"("<<m_pCoorA->getX()<<","<<m_pCoorA->getY()<<")"<<endl;
cout<<"("<<m_pCoorB->getX()<<","<<m_pCoorB->getY()<<")"<<endl;
}
/*
* demo.cpp
*
* Created on: 2017年7月13日
* Author: rmbp
*/
#include<iostream>
#include<stdlib.h>
#include"Line.h"
using namespace std;
int main(void)
{
Line *p=new Line(,,,);
p->printInfo();
delete p;
p=NULL;
cout<<sizeof(p)<<endl;
cout<<sizeof(Line)<<endl;
return ;
}

printInfo()

(1,2)

(3,4)

~Coordinate1,2

~Coordinate3,4

~Line()

8

16  //(64位结果,32位减半)

this指针: 

/*
* Array.h
*
* Created on: 2017年7月13日
* Author: rmbp
*/ class Array
{
public:
Array(int len);
~Array();
void setLen(int len);
int getLen();
void printInfo();
private:
int len;
};
/*
* Array.cpp
*
* Created on: 2017年7月13日
* Author: rmbp
*/
#include"Array.h"
#include<iostream>
using namespace std;
Array::Array(int len)
{
this->len=len;
}
Array::~Array()
{ }
void Array::setLen(int len)
{
this->len=len;
}
int Array::getLen()
{
return len;
}
void Array::printInfo()
{ }
#include <iostream>
#include <string>
#include "Array.h"
using namespace std; int main(void)
{
Array arr1();
cout<<arr1.getLen()<<endl;
return ;
}
/*
* Array.h
*
* Created on: 2017年7月13日
* Author: rmbp
*/ class Array
{
public:
Array(int len);
~Array();
Array& setLen(int len);
int getLen();
Array& printInfo();
private:
int len;
};
/*
* Array.cpp
*
* Created on: 2017年7月13日
* Author: rmbp
*/
#include"Array.h"
#include<iostream>
using namespace std;
Array::Array(int len)
{
this->len=len;
}
Array::~Array()
{ }
Array& Array::setLen(int len)
{
this->len=len;
return *this;
}
int Array::getLen()
{
return len;
}
Array& Array::printInfo()
{
cout<<"len="<<len<<endl;
return *this;
}
#include <iostream>
#include <string>
#include "Array.h"
using namespace std; int main(void)
{
Array arr1();
arr1.printInfo().setLen().printInfo();
return ;
}

len=10

len=5

常对象成员和常成员函数:

常成员函数中不能修改数据成员的值。  func() const{}

常指针和常引用:

Coordinate coor1(3,5);

const Coordinate &coor2=coor1;  只能调用常函数

const Coordinate *pCoor=&coor1;

------------

Coordinate coor1(3,5);

Coordinate coor2(7,9);

Coordinate *const pCoor=&coor1;   //pCoor具有读写权限