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//对了
原因还不明确。

1237

被折叠的 条评论
为什么被折叠?



