您的位置:首页 > 编程语言 > C语言/C++

一些零散的C++语法思考

2015-05-13 16:44 148 查看
1.关于声明形式为CLASS::*MEMBER的用法。

看下面例子:

#include<iostream>

using namespace std;

class A{

public:

        A(int c):b(c){}

        int b;

};

void fun(A a,int A::*b){

        cout<<a.*b<<endl;

}

int main(){

        A a(2);

        fun(a,&A::b);
        return 0;

}

运行结果是2。

假如在程序中有一个声明形式为A::*b的语句,该怎么理解:

应该是理解成A中成员b的一个指针。A中有一个int b成员,但是该成员并不是指针类型的,为了特指A中b的一个指针类型,所以应该用int A::*b的声明形式,这样子声明之后,在给该声明传值时,应该写成&A::b,并且为了能够引用该值,还应该传一个参数A a,如上面程序所示。

为什么在声明时不直接写成int *A::b,很显然,这样子表示A中有一个int*类型的b,显然是错误的,所以,为了表示类中某个成员的指针,一般声明成CLASS::*MEMBER的形式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: