对象成员指针学习到的一些感想

先贴上代码

demo.cpp

#include<iostream>
#include<stdlib.h>
#include"Line.h"
using namespace std;
int main()
{
	Line *p=new Line(1,2,3,4);
	delete p;
	p=NULL;
	system("pause");
	return 0;
}

Line.h

#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

#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;
}

Coordinate.cpp

#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;
		}

Coordinate.h

class Coordinate
{
	public:
		Coordinate(int x,int y);
		~Coordinate();
		int getX();
		int getY();
	private:
		int m_iX;
		int m_iY;
};

有几个我学习之后觉得要注意的点

1、如果一个类里面含有对象成员指针,其实按部就班来写就好了,在构造函数里面进行new,在析构函数里面注意释放和赋值NULL

其实在构造函数那里还应该判断new出来成功与否

2、对象成员指针和对象成员不一样,对象成员必须使用初始化列表来进行初始化,但是对象成员指针就不一样了,它可以在初始化列表里面初始化也可以在构造函数内进行初始化

3、如果使用初始化列表,要有()等价于=的概念

什么意思呢?

Line::Line(int x1,int y1,int x2,int y2):m_pCoorA(new Coordinate(x1,y1)),m_pCoorB(new Coordinate(x2,y2))
这一句话,其实我一开始写的是

m_pCoorA=new Coordinate(x1,x2)......

但其实我是还没有熟悉初始化列表的使用

()等价于=的概念非常重要,我需要多多熟悉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值