当前位置:编程学习 > C/C++ >>

C++中形参和数据成员同名的情况

在C++中,如果出现函数的形参和类的数据成员同名的情况,一定不要为了图简省而使用下面的写法。例:

#include <iostream>

using namespace std;

 

class A

{

    int x;

    int y;

    public :

        A(int x,int y);

        void print();

};

 

A::A(int x,int y)

{

    x = x;

    y = y;

}

void A::print()

{

    cout << "x:" << x << " y: " << y << endl;

}

int main()

{

    A *a = new A(34,56);

    a->print();

    delete a;

    return 0;

}
 

在红色部分突出显示的就是错误的写法,实际上,形参的值根本没有传入到这个函数中,而在你输出的时候,根本没有x,y的值,也就是一个随机的。说明形参根本没有传入。

这个也是Java中遇到的,如果有这种情况,java中用到的是this引用来显示的圈定范围,而C++中,也需要用this指针来显示的解决这个问题。或者用作用域限定符来解决。

更改后才会出现正确的结果,而以前,自己一直都没有注意到。

为何会这样呢?因为按照范围从小到大的顺序,形参的范围更小,所以替换的就是恒等式,那么自然不会显示的来给成员赋值,因为类的成员作用范围更小,此处,要谨记。

而且对于Java也是一样,都要显示的来指出。

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,