#pragma once
#ifndef __HASPTR__
#define __HASPTR__
class HasPtr
{
public:
HasPtr(int i,int *p);
//HasPtr& operator=(HasPtr&);
//HasPtr(const HasPtr&);
~HasPtr();
int get_ptr_value();
void set_ptr_value(int *p);
int get_val();
void set_val(int v);
private:
int val;
int *ptr;
};
#endif // !__HASPTR__
#include "stdafx.h"
#include <iostream>
#include "HasPtr.h"
using namespace std;
HasPtr::HasPtr(int i, int *p)
{
val = i;
ptr = p;
}
int HasPtr::get_ptr_value()
{
return *ptr;
}
void HasPtr::set_ptr_value(int *p)
{
ptr = p;
}
int HasPtr::get_val()
{
return val;
}
void HasPtr::set_val(int v)
{
val = v;
}
HasPtr::~HasPtr()
{
cout << "destructor of HasPtr " << endl;
}
// ClassWithPointer.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include "HasPtr.h"
using namespace std;
int main()
{
int temp = 100;
HasPtr ptr(2,&temp);
cout << ptr.get_ptr_value() << endl;
cout << ptr.get_val() << endl;
system("PAUSE");
system("PAUSE");
return 0;
}
// ClassWithPointer.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include "HasPtr.h"
using namespace std;
int main()
{
int temp = 100;
//HasPtr ptr(2,&temp);
HasPtr *ptr = new HasPtr(2,&temp);
cout << ptr->get_ptr_value() << endl;
cout << ptr->get_val() << endl;
system("PAUSE");
return 0;
}
#include "stdafx.h"
#include <iostream>
#include "HasPtr.h"
using namespace std;
HasPtr::HasPtr(int i, int *p)
{
val = i;
ptr = p;
}
int HasPtr::get_ptr_value()
{
return *ptr;
}
void HasPtr::set_ptr_value(int *p)
{
ptr = p;
}
int HasPtr::get_val()
{
return val;
}
void HasPtr::set_val(int v)
{
val = v;
}
HasPtr::~HasPtr()
{
cout << "destructor of HasPtr " << endl;
delete ptr;
}
// ClassWithPointer.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include "HasPtr.h"
using namespace std;
int main()
{
int temp = 100;
HasPtr ptr(2,&temp);
cout << ptr.get_ptr_value() << endl;
cout << ptr.get_val() << endl;
system("PAUSE");
return 0;
}
// ClassWithPointer.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include "HasPtr.h"
using namespace std;
int main()
{
int temp = 100;
HasPtr ptr(2,&temp);
cout << ptr.get_ptr_value() << endl;
cout << ptr.get_val() << endl;
system("PAUSE");
return 0;
}
#include "stdafx.h"
#include <iostream>
#include "HasPtr.h"
using namespace std;
HasPtr::HasPtr(int i, int *p)
{
val = i;
ptr = p;
}
int HasPtr::get_ptr_value()
{
return *ptr;
}
void HasPtr::set_ptr_value(int *p)
{
ptr = p;
}
int HasPtr::get_val()
{
return val;
}
void HasPtr::set_val(int v)
{
val = v;
}
HasPtr::~HasPtr()
{
cout << "destructor of HasPtr " << this << endl;
delete ptr;
}
// ClassWithPointer.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include "HasPtr.h"
using namespace std;
int main()
{
int *temp = new int(100);
HasPtr ptr(2,temp);
cout << "ptr-------------->" << &ptr << endl;
cout << ptr.get_ptr_value() << endl;
cout << ptr.get_val() << endl;
HasPtr ptr2(ptr);
cout << "ptr2-------------->" << &ptr2 << endl;
cout << ptr2.get_ptr_value() << endl;
cout << ptr2.get_val() << endl;
HasPtr ptr3 = ptr;
cout << "ptr3-------------->" << &ptr3 << endl;
cout << ptr3.get_ptr_value() << endl;
cout << ptr3.get_val() << endl;
system("PAUSE");
return 0;
}
#pragma once
#ifndef __UPTR__
#define __UPTR__
#include "HasPtr.h"
#include <iostream>
using namespace std;
class U_Ptr
{
friend class HasPtr;
int *ip;
size_t use;
U_Ptr(int *p):ip(p),use(1) {}
~U_Ptr()
{
cout << "destruction:"<< *ip << endl;
delete ip;
}
};
#endif // !__UPTR__
#pragma once
#ifndef __HASPTR__
#define __HASPTR__
#include "U_Ptr.h"
class HasPtr
{
public:
HasPtr(int *p, int i):ptr(new U_Ptr(p)),val(i){}
HasPtr(const HasPtr &orgi) :ptr(orgi.ptr), val(orgi.val)
{
++ptr->use;
cout << "coming into copy construction:" << ptr->use << endl;
}
HasPtr& operator=(const HasPtr &rhs);
~HasPtr();
int get_ptr_value() const;
int get_int() const;
void set_ptr(int *p);
void set_int(int i);
private:
U_Ptr *ptr;
int val;
};
#endif // !__HASPTR__
#include "stdafx.h"
#include "HasPtr.h"
#include <iostream>
using namespace std;
HasPtr& HasPtr::operator=(const HasPtr &rhs)
{
++rhs.ptr->use;
if (--ptr->use == 0)
{
delete ptr;
}
ptr = rhs.ptr;
val = rhs.val;
return *this;
}
HasPtr::~HasPtr()
{
cout << "destruction:" << ptr->use << endl;
if (--ptr->use == 0)
{
delete ptr;
}
}
int HasPtr::get_ptr_value() const
{
return *ptr->ip;
}
int HasPtr::get_int() const
{
return val;
}
void HasPtr::set_ptr(int *p)
{
ptr->ip = p;
}
void HasPtr::set_int(int i)
{
val = i;
}
// SmartPointer.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "HasPtr.h"
#include <iostream>
using namespace std;
int main()
{
int *temp = new int(100);
HasPtr ptr(temp,22);
cout << "ptr------------>" << endl;
cout << ptr.get_ptr_value() << endl;
cout << ptr.get_int() << endl;
HasPtr ptr2(ptr);
cout << "ptr2------------>" << endl;
cout << ptr2.get_ptr_value() << endl;
cout << ptr2.get_int() << endl;
system("PAUSE");
return 0;
}
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有