自考新教材-p161

源程序:

#include<iostream>
using namespace std;

class pointer
{
public:
int a;
int *p; //指向整型数的指针
pointer()
{
a=100;
p=new int(10);
}
pointer(const pointer &tempp) //复制构造函数
{
if(this != &tempp)
{
a=tempp.a;
p=new int();
*p=*tempp.p;
}
}
~pointer()
{
if(p!=NULL)
delete p;
}
pointer &operator=(const pointer &c)//成员函数
{
if(this == &c)
return *this; //避免a=a这样的赋值
delete this->p; //释放原来的空间
this->p = new int(*c.p); //申请新空间保存值
return *this;
}
};

int main()
{
pointer p1; //使用默认构造函数
pointer p2(p1); //使用复制构造函数
pointer p3;
p1=p1; //用来测试
p3=p1; //使用复制构造函数
cout<<"\n初始化后,各对象的值及内存地址"<<endl;
cout<<"对象名\t对象地址 a的值 p中的值 p指向的值 p的地址"<<endl;
cout<<"p1:\t"<<&p1<<","<<p1.a<<","<<p1.p<<","<<*p1.p<<","<<&p1.p<<endl;
cout<<"p2:\t"<<&p2<<","<<p2.a<<","<<p2.p<<","<<*p2.p<<","<<&p2.p<<endl;
cout<<"p3:\t"<<&p3<<","<<p3.a<<","<<p3.p<<","<<*p3.p<<","<<&p3.p<<endl;
*p1.p=20;
p2.a=300;
cout<<"\n修改后,各对象的值及内存地址"<<endl;
cout<<"对象名\t对象地址 a的值 p中的值 p指向的值 p的地址"<<endl;
cout<<"p1:\t"<<&p1<<","<<p1.a<<","<<p1.p<<","<<*p1.p<<","<<&p1.p<<endl;
cout<<"p2:\t"<<&p2<<","<<p2.a<<","<<p2.p<<","<<*p2.p<<","<<&p2.p<<endl;
cout<<"p3:\t"<<&p3<<","<<p3.a<<","<<p3.p<<","<<*p3.p<<","<<&p3.p<<endl;
return 0;
}

运行结果:

原文地址:https://www.cnblogs.com/duanqibo/p/12259064.html

时间: 2024-10-19 04:01:09

自考新教材-p161的相关文章

自考新教材--p40

源程序:   各种数据类型的转换 #include <iostream> using namespace std; int main() { const int cInt = 30; int oneInt = 50; int &ref = oneInt; const int &rc1 = cInt; const int &rc2 = oneInt; const int &rc3 = ref; int dInt = ref; int eInt = cInt; in

自考新教材--p39

源程序: using namespace std; int main() { int oneInt = 1; int &ref = oneInt; const int &refc = oneInt;  //定义常引用 ref = 2;  //修改ref也即修改了oneInt cout << "oneInt=" << oneInt << "," << "ref=" << r

自考新教材--p49

源程序: #include <iostream> #define N 5 using namespace std; void insert_sort(int a[], int n)   //直接插入排序 { int i, j, temp; for (i = 1; i < n; i++) { temp = a[i]; j = i - 1; while (j >= 0 && temp < a[j]) { a[j + 1] = a[j]; j--; } a[j +

自考新教材--p179

源程序: #include <iostream> using namespace std; class BaseClass { public: int v1, v2; BaseClass() { v1 = 1; v2 = 1; } int temp1() {} }; class DerivedClass :public BaseClass { int v1; int temp1() {} public: DerivedClass() { v1 = 10; } void printv() { c

自考新教材-p250

用基类指针访问基类对象及派生类对象 源程序: #include <iostream> #include <string> using namespace std; class A { public: void put_name(string s) { name = s; } virtual void print_name() const { cout << "A::" << name << "\n"; }

自考新教材-p252

基类引用实现多态 源程序: #include <iostream> using namespace std; class A { public: virtual void Print() { cout << "A::Print" << endl; } }; class B :public A { public: virtual void Print() { cout << "B::print" << end

自考新教材-p253

多态机制下对象存储空间的大小 源程序: #include <iostream> using namespace std; class A { public: int i; virtual void func(); virtual void func2(); }; class B :public A { int j; void func() {} }; int main() { cout << sizeof(A) << "," << siz

自考新教材-p255

使用多态处理图形示例 源程序: #include <iostream> #include <cmath> using namespace std; class CShape { protected: double acreage; public: CShape() { //cout<<"基类构造函数"<<endl; }; virtual ~CShape() { //cout<<"基类析构函数"<<

自考新教材-p228

互包含的类 源程序: #include<iostream> #include<string> using namespace std; class B; class A { public: int aInt; B *bPoint=NULL; void SetValue(int v) { aInt=v; } }; class B { public: A aCla; int bInt; void SetValue(int v) { bInt=v; } }; int main() { A