0

私は目的の C++ に慣れていません。ここに私の質問があります: クラスがあるとします。

class MyTestClass
{
 public:
  int memLength_;
  char *mem;
  MyTestClass(int memLength)
  {
      memLength_ = memLength;
      mem = new char[memLength_];
   }
   ~MyTestClass()
   {
      delete []mem;
   }

}

ここでやりたいことは、MyTestClassObjective C++ を使用してオブジェクトを作成することです。私が行ったことは次のとおりです。

@interface ObjectRetriever : NSObject
+ (MyTestClass)ObtainMyTestClass;  // Function 1
+ (MyTestClass*)ObtainMyNextTestClass; //Function 2
@end

+(MyTestClass)ObtainMyTestClass
{

  int memLen = 100;

  MyTestClass myClass(memLen)
  return myClass;

}
+ (MyTestClass*)ObtainMyNextTestClass
{

  MyTestClass *myClassPtr;
  myClassPtr = new MyTestClass(memLen)
  return myClassPtr;
}

を使用してオブジェクトObjectRetrieverを作成するときMyTestClassは、このようにします

 MyTestClass testClassObject1 = [ObjectRetriever ObtainMyTestClass];
  MyTestClass *testClassObjectPtr2 = [ObjectRetriever  ObtainMyNextTestClass];

私の質問は次のとおりです。

  • ObtainMyTestClassObtainMyNextTestClass、どちらが良いですか?
  • このようにクラスを実装して使用すると、メモリ リークの危険がありますか?

ありがとう。

4

1 に答える 1