C++学习笔记(3)——成员变量、成员函数的指针
来源:互联网 发布:淘宝分销钱怎么分 编辑:程序博客网 时间:2024/05/18 01:18
探讨成员变量,成员函数在内存中的地址及其访问方式
源程序例子如下:
/**///////////////////////////////////////////////////////////////////////////
// 例:数据成员和函数成员的指针
/**///////////////////////////////////////////////////////////////////////////
class CMyClass
...{
//私有成员变量
int m_nX;
static int m_nY;
public:
//公有成员变量
int m_nA;
static int m_nB;
public:
CMyClass();
CMyClass(int nX,int nA);
~CMyClass();
public:
void SetX(int nValue);
int GetX();
static void SetY(int nValue);
static int GetY();
};
//在类外对静态成员赋值
int CMyClass::m_nY=100; //私有静态成员变量赋值
int CMyClass::m_nB=200; //公有静态成员变量赋值
CMyClass::CMyClass()
...{
m_nX=300;
m_nA=400;
m_nY=111;
m_nB=222;
}
CMyClass::CMyClass(int nX,int nA)
...{
m_nX=nX;
m_nA=nA;
m_nY=333;
m_nB=444;
}
CMyClass::~CMyClass()
...{
}
void CMyClass::SetX(int nValue)
...{
m_nX=nValue;
}
void CMyClass::SetY(int nValue)
...{
m_nY=nValue;
}
int CMyClass::GetX()
...{
return m_nX;
}
int CMyClass::GetY()
...{
return m_nY;
}
main()
...{
//定义一个对象
CMyClass myobj1;
CMyClass myobj2(500,600);
//定义指向成员函数的指针
/**///////////////////////////////////////////////////////////////////////////
// 公有 非静态成员函数 在类外 不能 使用类标志符引用
//void (*pSetX)(int)=&CMyClass::SetX;
//int (*pGetX)(void)=&CMyClass::GetX;
//void (*pSetX)(int)=myobj1.SetX;
//int (*pGetX)(void)=myobj1.GetX;
/**///////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// 公有 静态成员函数 在类外 可以使用类标志符引用
void (*pSetY)(int)=&CMyClass::SetY;
int (*pGetY)()=&CMyClass::GetY;
/**///////////////////////////////////////////////////////////////////////////
//定义指向成员数据的指针
/**///////////////////////////////////////////////////////////////////////////
//私有 非静态成员数据 在类外不能使用类标志符引用(私有数据在类外本来就不能访问)
//int *pX=&CMyClass::m_nX;
/**///////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//私有 静态成员数据 在类外 也不能使用类标志符引用(私有数据在类外本来就不能访问)
//int *pY=&CMyClass::m_nY;
/**///////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//公有 非静态成员变量 在类外 不能用类标志符引用
//int *pA=&CMyClass::m_nA;
/**///////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//公有 静态成员变量 在类外 可以使用类标志符引用
int *pB=&CMyClass::m_nB;
/**///////////////////////////////////////////////////////////////////////////
//在主函数中通过指向静态成员(数据、函数)的指针对类的静态成员修改
pSetY(555);
*pB=666;
return 0;
}
// 例:数据成员和函数成员的指针
/**///////////////////////////////////////////////////////////////////////////
class CMyClass
...{
//私有成员变量
int m_nX;
static int m_nY;
public:
//公有成员变量
int m_nA;
static int m_nB;
public:
CMyClass();
CMyClass(int nX,int nA);
~CMyClass();
public:
void SetX(int nValue);
int GetX();
static void SetY(int nValue);
static int GetY();
};
//在类外对静态成员赋值
int CMyClass::m_nY=100; //私有静态成员变量赋值
int CMyClass::m_nB=200; //公有静态成员变量赋值
CMyClass::CMyClass()
...{
m_nX=300;
m_nA=400;
m_nY=111;
m_nB=222;
}
CMyClass::CMyClass(int nX,int nA)
...{
m_nX=nX;
m_nA=nA;
m_nY=333;
m_nB=444;
}
CMyClass::~CMyClass()
...{
}
void CMyClass::SetX(int nValue)
...{
m_nX=nValue;
}
void CMyClass::SetY(int nValue)
...{
m_nY=nValue;
}
int CMyClass::GetX()
...{
return m_nX;
}
int CMyClass::GetY()
...{
return m_nY;
}
main()
...{
//定义一个对象
CMyClass myobj1;
CMyClass myobj2(500,600);
//定义指向成员函数的指针
/**///////////////////////////////////////////////////////////////////////////
// 公有 非静态成员函数 在类外 不能 使用类标志符引用
//void (*pSetX)(int)=&CMyClass::SetX;
//int (*pGetX)(void)=&CMyClass::GetX;
//void (*pSetX)(int)=myobj1.SetX;
//int (*pGetX)(void)=myobj1.GetX;
/**///////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// 公有 静态成员函数 在类外 可以使用类标志符引用
void (*pSetY)(int)=&CMyClass::SetY;
int (*pGetY)()=&CMyClass::GetY;
/**///////////////////////////////////////////////////////////////////////////
//定义指向成员数据的指针
/**///////////////////////////////////////////////////////////////////////////
//私有 非静态成员数据 在类外不能使用类标志符引用(私有数据在类外本来就不能访问)
//int *pX=&CMyClass::m_nX;
/**///////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//私有 静态成员数据 在类外 也不能使用类标志符引用(私有数据在类外本来就不能访问)
//int *pY=&CMyClass::m_nY;
/**///////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//公有 非静态成员变量 在类外 不能用类标志符引用
//int *pA=&CMyClass::m_nA;
/**///////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//公有 静态成员变量 在类外 可以使用类标志符引用
int *pB=&CMyClass::m_nB;
/**///////////////////////////////////////////////////////////////////////////
//在主函数中通过指向静态成员(数据、函数)的指针对类的静态成员修改
pSetY(555);
*pB=666;
return 0;
}
根据以上程序,对象的数据空间如下所示:
- C++学习笔记(3)——成员变量、成员函数的指针
- C++学习(2)--成员变量、成员函数的指针
- C++面向对象—成员函数与成员变量的实现机制学习笔记(1)
- C/C++学习笔记:指向类成员变量的指针
- Objective-C学习笔记(十六)——成员变量
- Objective-C学习笔记(二十四)——成员变量的访问修饰符学习
- Objective-C学习笔记(二十六)——成员变量的继承学习
- C/C++静态成员变量和静态成员函数(学习笔记)
- 成员函数的指针(C++)
- 类的成员变量偏移指针和成员函数指针
- 类的成员变量偏移指针和成员函数指针 .
- 如何定义一个类成员的指针(成员变量或成员函数)
- 成员函数指针和成员变量指针
- 学习笔记之类的数据成员指针和函数指针
- 指向成员函数的指针类型成员变量
- c/c++笔试题——const类型的成员函数内部如何改变成员变量
- c/c++笔试题——const类型的成员函数内部如何改变成员变量
- 成员变量/函数指针的用法
- .NET:七道最经典的asp.net页面传值题
- 第8章 检测浏览器和操作系统
- sharepoint对象及其属性的使用(转)
- 深入浅出ShellExecute
- Visual C++中实现双缓冲的基本原理
- C++学习笔记(3)——成员变量、成员函数的指针
- C++ UNICODE 编程从入门到精通
- Microsoft Visual Basic 2008 Step by Step (with companion CD)
- Unicode的C/C++编程
- 基金定投
- 要培养节俭意识
- html表格显示数据库中多对多关系的思考
- 进销存设计与分析_采购退货单(3)
- 为什么Hibernate如此成功