《C++必知必会》读书笔记3

简介:

指向数据成员的“指针”并非指针。

#include <iostream>
using namespace std;

class A{
public:
	A(){
		//do nothing here.
	}
	A(int num,double num2){
		this->num=num;
		this->num2=num2;
	}
	int num;
	double num2;
};

int _tmain(int argc, _TCHAR* argv[])
{	
	A* pA=new A(5,6);

	int A::* p=&A::num;  //p是一个指针,指向A的一个int成员
	double A::*p1=&A::num2;
	cout<<p<<endl;   //输出偏移量 而不是地址
	cout<<p1<<endl;

	//通过偏移量访问数据成员
	cout<<pA->*p<<endl;
	cout<<pA->*p1<<endl;

	delete pA;
	return 0;
}

image

指向成员函数的指针并非指针:

#include <iostream>
using namespace std;

class A{
public:
	void function( int num);
	bool function1()const;
	virtual bool function2() const=0;
};

class B:public A{
public :
	bool function2()const;
};

int _tmain(int argc, _TCHAR* argv[])
{	
	void (A::* p)(int)= &A::function;  //不是地址,而是一个指向成员函数的指针
	
	bool (A::* p1)()const =&A::function1;  // 指向成员函数的指针可以指向一个常量成员函数

// 	B b;
// 	A *a=&b;
// 	(a->*p1)();
// 	(b.*p1)();

	return 0;
}

==============================================================================

本文转自被遗忘的博客园博客,原文链接:http://www.cnblogs.com/rollenholt/archive/2012/03/25/2416495.html,如需转载请自行联系原作者

相关文章
|
6月前
|
存储 程序员 C语言
c++primer plus 6 读书笔记 第四章 复合类型
c++primer plus 6 读书笔记 第四章 复合类型
|
6月前
|
编译器 C++
c++primer plus 6 读书笔记 第十章 对象和类
c++primer plus 6 读书笔记 第十章 对象和类
|
6月前
|
算法 小程序 IDE
c++primer plus 6读书笔记第一章预备知识
c++primer plus 6读书笔记第一章预备知识
|
6月前
|
编译器 数据安全/隐私保护 C++
c++primer plus 6 读书笔记 第十三章 类继承
c++primer plus 6 读书笔记 第十三章 类继承
|
6月前
|
C++
c++primer plus 6 读书笔记 第十四章 C++中的代码重用
c++primer plus 6 读书笔记 第十四章 C++中的代码重用
|
6月前
|
C++
c++primer plus 6 读书笔记 第十一章 使用类
c++primer plus 6 读书笔记 第十一章 使用类
|
6月前
|
编译器 C++
c++primer plus 6 读书笔记 第八章 函数探幽0
c++primer plus 6 读书笔记 第八章 函数探幽0
|
6月前
|
编译器 vr&ar C++
c++primer plus 6 读书笔记 第七章 函数--C++的编程模块
c++primer plus 6 读书笔记 第七章 函数--C++的编程模块
|
6月前
|
C++
c++primer plus 6 读书笔记 第六章 分支语句和逻辑运算符
c++primer plus 6 读书笔记 第六章 分支语句和逻辑运算符
|
6月前
|
C语言 C++ 容器
c++primer plus 6 读书笔记 第五章 循环和关系表达式
c++primer plus 6 读书笔记 第五章 循环和关系表达式