指向类数据成员的指针
2017-11-16 14:23
267 查看
#include <iostream>
using namespace std;
//指向类数据成员的指针
class Student{
public:
Student(string n, int nu):name(n),num(nu){}
string name;
int num;
};
int main(){
Student s("zhangsan",1002);
Student s1("lisi",1001);
//指向非静态数据成员的指针在定义时必须和类相关联,在使用时必须和具体的对象关联。
//1.定义:<数据类型><类名>::*<指针名>
//2.赋值&初始化:<数据类型><类名>::*<指针名>[=&<类名>::<非静态数据成员>]
string Student::*ps = &Student::name;
/*
3.解用引:由于类不是运行时 存在的对象。
因此,在使用这类指针时,需要首先指定类的一个对象,
然后,通过对象来引用指针所指向的成员。
<类对象名>.*<指向非静态数据成员的指针>
<类对象指针>->*<指向非静态数据成员的指针>
*/
cout<<s.*ps<<endl;
cout<<s1.*ps<<endl;
Student *pp = new Student("wangwu",1003);
cout<<pp->*ps<<endl;
return 0;
}
using namespace std;
//指向类数据成员的指针
class Student{
public:
Student(string n, int nu):name(n),num(nu){}
string name;
int num;
};
int main(){
Student s("zhangsan",1002);
Student s1("lisi",1001);
//指向非静态数据成员的指针在定义时必须和类相关联,在使用时必须和具体的对象关联。
//1.定义:<数据类型><类名>::*<指针名>
//2.赋值&初始化:<数据类型><类名>::*<指针名>[=&<类名>::<非静态数据成员>]
string Student::*ps = &Student::name;
/*
3.解用引:由于类不是运行时 存在的对象。
因此,在使用这类指针时,需要首先指定类的一个对象,
然后,通过对象来引用指针所指向的成员。
<类对象名>.*<指向非静态数据成员的指针>
<类对象指针>->*<指向非静态数据成员的指针>
*/
cout<<s.*ps<<endl;
cout<<s1.*ps<<endl;
Student *pp = new Student("wangwu",1003);
cout<<pp->*ps<<endl;
return 0;
}
相关文章推荐
- osg源码中的ref_ptr operator unspecified_bool_type() 指向类数据成员的指针&类转化为另一类型(如自定义的C类转化为int)
- C++必知必会 - 指向类的数据成员的指针并非指针
- 指向数据成员的指针
- 指向类数据成员的指针
- 指向类数据成员、类成员函数的指针
- 指向类非static的数据成员和函数的指针用法
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?
- 基于数据成员是指向一个数组的指针来实现的list
- C++基础系列--指向数据成员的指针
- Item 15.指向类数据成员的指针
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?
- C++之指向数据成员的指针和指向成员函数的指针
- Item 15.指向类数据成员的指针
- 指向数据成员的指针
- Item 15.指向类数据成员的指针
- c++中指向类数据成员的指针
- 十二章 类————类的数据成员可以是指向自身类型的指针或引用
- 指向类的数据成员和函数指针
- C++之指向数据成员的指针和指向成员函数的指针
- c++中指向类数据成员的指针