厕所复制函数的一段代码编译不通过 求指点
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
using namespace std;
class A {
public:
// 构造函数为指针成员开辟空间并赋初值0
A() {
num_p = new int;
*num_p = 0;
}
// 自定义复制函数
A (const A & a) {
num_p = new int;
*num_p = a.getNum();
}
// 给指针所指对象赋值
void setNum(int num) {
*num_p = num;
}
// 获取指针所指对象
int getNum() {
int num = *num_p;
return num;
}
private:
int *num_p;
};
int main()
{
A a1;
// 设置a1指针成员所指对象的值
a1.setNum(1);
// 调用自定义的复制函数
A a2=a1;
// 观察得出a1,a2的指针成员所指对象均为整数1。
cout << "a1`s num: " << a1.getNum() << endl;
cout << "a2`s num: " << a2.getNum() << endl;
// 修改a1指针成员所指对象的值
a1.setNum(2);
// 观察得出不单a1的指针成员所指对象改了,a2的没变。
cout << "a1`s num: " << a1.getNum() << endl;
cout << "a2`s num: " << a2.getNum() << endl;
return 0;
}
//int getNum() {
int getNum() const {
int num = *num_p;
return num;
}