1

同じクラスの他のメンバー関数の定義内でクラスのメンバー関数を呼び出すメソッドは何ですか?

例:ファイル:header.h

class A
{
public:
void fn1();
void fn2();
};

今cppファイルにあります:function.cpp

方法1:

#include"header.h"
void A::fn1()
{
//function body for fn1()

//What is the way to make a call for fn2()?
//assume I have definition of fn2() above similar to fn1()

fn2();
} 

方法2:

#include"header.h"
A obj_A;
void A::fn1()
{
//function body for fn1()

//What is the way to make a call for fn2()?
//assume I have definition of fn2() above similar to fn1()

obj_A.fn2();
} 

どちらの方法が正しいか明確にしてください。

ありがとう、C++の初心者。

4

2 に答える 2

3

どちらのバージョンも正しいですが、動作が異なります。最初のバージョンは f1 が呼び出されたのと同じインスタンスで関数を呼び出しますが、2 番目のバージョンは常に obj_A インスタンスで f2 を呼び出します。

于 2012-11-06T18:24:59.227 に答える
1

方法 1 が正しいです。

メソッド 2 は、呼び出し元とは異なるインスタンスでメソッドを呼び出しているように見えますが、これは別の動作です。これが必要な場合がありますが、これがそのケースであることを示していません。

最初の方法に問題がありますか?

于 2012-11-06T18:23:48.573 に答える