一、目的
指向class object的指针是如何与一个指向整数或一个指向template vector的指针有所不同?这个问题被很多互联网公司拿来考查面试者,《深度探索C++对象模型》第一章中指针的类型这样写道:“指向不同类型之各指针”间的差异,既不在于指针的表示方法所有不同,也不在于其内容(代表一个地址)不同,而是在于其所寻址出来的object类型不同。另外,操作符sizeof这篇文章也探讨指针占用内存的大小这一话题。
二、C++代码
#include <iostream>
#include <vector>
#include <string>
using namespace std;
class A
{
public:
// operations
private:
int m_i;
};
void main()
{
// 指向class object的指针
A *a = new A();
// 指向整型的指针
int tmp = 1;
int *i = &tmp;
// 指向template vector的指针
vector<string> col = {"hello", "world"};
vector<string> *ptv = &col;
cout << "指针的类型" << '\n'
<< sizeof(a) << '\n'
<< sizeof(i) << '\n'
<< sizeof(ptv) << endl;
cin.get();
}
程序执行结果一如分析:
不管何种类型的指针,指针是指向变量的地址,占4个字节。