次の C++ コードを検討してください。
// friend functions
#include <iostream>
using namespace std;
class CRectangle {
int width, height;
public:
void set_values (int, int);
int area () {return (width * height);}
friend CRectangle duplicate (CRectangle);
};
void CRectangle::set_values (int a, int b) {
width = a;
height = b;
}
CRectangle duplicate (CRectangle rectparam)
{
CRectangle rectres; // Defined without using new keyword. This means scope of this variable of in this function, right ?
rectres.width = rectparam.width*2;
rectres.height = rectparam.height*2;
return (rectres);
}
int main () {
CRectangle rect, rectb;
rect.set_values (2,3);
rectb = duplicate (rect);
cout << rectb.area();
return 0;
}
変数「CRectangle rectres」は、関数「CRectangle duplicate」で定義されています。
これは、変数「CRectangle rectres」のスコープが関数のみに限定されていることを意味しますか? (newキーワードを使わずに定義しているため)
上記の質問に対する答えが「はい」の場合、どのように返すことができますか (ローカル変数であるため) ?
クレジット: コードの引用: http://www.cplusplus.com/doc/tutorial/inheritance/