程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 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也是一樣,都要顯示的來指出。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved