cpp学习(5)

1、拷贝构造函数
看这篇链接
重点在于拷贝构造函数的声明方式:
在这里插入图片描述深浅拷贝的判准为:如果改变两个相等的值的其中一个,另外一个随之改变,则为浅拷贝,反之为深拷贝;

2、类的派生
基类:学校教职人员
子类:教师、食堂大妈、保安
下面在一个函数例子中阐述继承的基本要点

#include<iostream>
#include<undergraduate.h>
#include<graduate.h>
#pragma once
using namespace std;
int main()
{
	graduate s1;
	graduate s2;
	s1.show();
	s2.show();
	return 0;
}





#include "graduate.h"
#include<iostream>
#pragma once
using namespace std;

graduate::graduate(int paprenum, char mentor, int id, char *name, char *major)
{
	undergraduate::undergraduate(id, name, major);
	this->mentor = mentor;
	this->paprenum = paprenum;
}
void graduate::show()
{
	undergraduate::show();
	cout << this->mentor<<this->paprenum << endl;
}

graduate::graduate()
{
	undergraduate::undergraduate();
	this->paprenum = 0;
	this->mentor = 0;
}

#pragma once
#include "undergraduate.h"
class graduate :
	public undergraduate
{
private:
	int paprenum;
	char mentor;

public:
	graduate(int paprenum, char mentor, int id, char *name, char *major);
	graduate();
	void show();
};





#pragma once
class undergraduate
{
public:
	undergraduate(int id, char *name, char *major);
	undergraduate();
	void show();
protected:
	int id;
	char *name;
	char *major;
};




#include<iostream>
#include<undergraduate.h>
#pragma once
using namespace std;
undergraduate::undergraduate(int id, char *name, char *major)
{
	this->id = id;
	this->name = name;
	this->major = major;
}
undergraduate::undergraduate()
{
	this->id = 0;
	this->name = 0;
	this->major = 0;
}
void undergraduate::show()
{
	cout << "the info is:" << this->id<<this->name<<this-> major << endl;
}

需要注意的有以下几点:
1、在有继承的情况下,注意在每一个文件,不管是.h还是在.cpp前面都加上
#pragma once,这样可以防止同一个.h在不同文件中的多次引用而引发编译失败;
2、在定义对象时如果出现你觉得你定义了但是系统告诉你没有定义的情况,可以这样看看,单独定义,抛弃构造函数。
T t1();//出错了
T t1//对了
原因还不明确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值