64,654
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
int main()
{ return 0;
}
class A
{
int m_i;
public:
static void* operator new(size_t n)
{
void* p=malloc(n);
cout<<"在 "<<p<<" 处成功分配了 "<<n<<" 个字节的内存。\n";
return p;
}
static void operator delete(void* p)
{
void* tmp=p;
free(p);
cout<<"在 "<<tmp<<" 处成功回收了内存。\n";
}
explicit A(int i=0):m_i(i){}
int get()const{return m_i;}
void set(int i){m_i=i;}
};
class B
{
public:
static A* m_a;
};
A* B::m_a=new A(88);
int main()
{
cout<<B::m_a->get()<<'\n';
B::m_a->set(2008);
cout<<B::m_a->get()<<'\n';
//////////////////////////////////////
return 0;
}
template<typename T>
class HasPtrr
{
T* ptr;
HasPtrr(const HasPtrr& og);//
HasPtrr& operator=(const HasPtrr&);//
public:
explicit HasPtrr(T* p=0):ptr(p){}
~HasPtrr(){delete ptr;ptr=0;}
T* get_ptr()const{return ptr;}
T get_ptr_val()const{return *ptr;}
void set_ptr_val(const T& i){*ptr=i;}
};
class A
{
int m_i;
public:
static void * operator new(size_t n)
{
void* p=malloc(n);
cout<<"在 "<<p<<" 处成功分配了 "<<n<<" 个字节的内存。\n";
return p;
}
static void operator delete(void* p)
{
void* tmp=p;
free(p);
cout<<"在 "<<tmp<<" 处成功回收了内存。\n";
}
explicit A(int i=0):m_i(i){}
int get()const{return m_i;}
void set(int i){m_i=i;}
};
class B
{
public:
static HasPtrr<A> m_a;//代替裸指针:A* m_a
};
HasPtrr<A> B::m_a(new A(88));
int main()
{
cout<<B::m_a.get_ptr_val().get()<<'\n';
/////////////////////////////////////
return 0;
}
#include<fstream>
using std::ofstream;
template<typename T>
class HasPtrr
{
T* ptr;
HasPtrr(const HasPtrr& og);//
HasPtrr& operator=(const HasPtrr&);//
public:
explicit HasPtrr(T* p=0):ptr(p){}
~HasPtrr(){delete ptr;ptr=0;}
T* get_ptr()const{return ptr;}
T get_ptr_val()const{return *ptr;}
void set_ptr_val(const T& i){*ptr=i;}
};
class A
{
int m_i;
static ofstream m_os;
public:
static void * operator new(size_t n)
{
void* p=malloc(n);
m_os<<"在 "<<p<<" 处成功分配了 "<<n<<" 个字节的内存。\n";
return p;
}
static void operator delete(void* p)
{
void* tmp=p;
free(p);
m_os<<"在 "<<tmp<<" 处成功回收了内存。\n";
}
explicit A(int i=0):m_i(i){}
int get()const{return m_i;}
void set(int i){m_i=i;}
};
ofstream A::m_os("E:\\ptr.txt",std::ios::app);
class B
{
public:
static HasPtrr<A> m_a;//代替裸指针:A* m_a
};
HasPtrr<A> B::m_a(new A(88));
int main()
{
cout<<B::m_a.get_ptr_val().get()<<'\n';
//////////////////////////////////////
return 0;
}
enum,或者const int类型的静态变量类里面可以直接初始化的:
static const int test=4;
static enum {ONE, TWO};
一般的成员变量:类里面申明,
外面初始化;