私はプログラミングをしていて、C++ クラスで奇妙な動作を見つけました。そこで、文字列、そのクラスのコンストラクター、およびオブジェクトから文字列を出力するフレンド メソッド (show) を含む単純なクラスを作成しました。しかし、メイン関数でわかるように。method(show) 単純な文字列に渡すと機能します。便利だと思いましたが、メソッドのパラメーターがオブジェクトへの参照である場合、なぜ機能するのでしょうか?
#include <iostream>
using namespace std;
class lol
{
char * str;
public:
lol(const char * s);
friend void show(const lol & l);
};
lol::lol(const char * s) //assign string to object
{
str = new char[strlen(s)+1];
strcpy(str,s);
}
void show(const lol & l) //prints string from object
{
cout << l.str;
};
int main()
{
show("TEST"); //passing string but not an object
return 0;
};