可访问性控制是编译器技术还是运行时的技术?解决办法

可访问性控制是编译器技术还是运行时的技术?
今天看Exceptional   C++   Style,看到一个例子。
class   A;
typedef   int(A::*   funp)   (int);

class   A
{
public   :
funp   Get()
{
return   &A::add   ;
}
private:
int     add(int   d)
{
++d;
cout < < "in   add   value   =   " < <d < < '\n ';
return   d;
}
};

int   main()
{
A   a;
funp   p;
p   =   a.Get   ();
(a.*p)(1);
return   1;
}

另外,如果这样写
class   B
{
public:
int   GetV()
{
return   v;
}
private:
int   v;
};
int   main()
{
B   b;
cout < <b.GetV   ();
return   1;
}
那么B::GetV应该会被编译器做成内联函数,而内联函数的实质就是替换代码。
那么编译器替换之后的代码就是
cout < <b.v;
而v是不可访问的。所以我就猜测,是不是可访问性控制是一种编译时,由编译器实现的技术。

我对C++学的还不够透,所以不明白这个问题。

------解决方案--------------------
C++语言中的是编译期技术。