C++の独習11164915689111:更新

1 デフォルトコンストラクタ無しのオブジェクト配列を作りたい。

  class B {
  protected:
   int d;
   int a;
  public:
   B(int x,int y) {d=x; a=y;};
   int getDiameter() {return d;};
   int getConst() {return a;};
  };

  B *paB[10];
  paB[0] = new B(22,23);
  printf("d=%d a=%d\n",paB[0]->getDiameter(),
  paB[0]->getConst());

2 加法演算子(operator+)、代入演算子って?

  #include "CYoko.h"
  #include "Cstr.h"
  int main(int argc, char* argv[])
  {

    String a("hello");
    String b(" world");
    String c = a + b;
    String d;
    printf("p1=%s\n",c.GetString());
    d = c;
    printf("p2=%s\n",d.GetString());
    return 0;
  }

  class String {
  public:
    String() {};//コンストラクタ
    ~String() {};//デストラクタ
    String(const char *value);
    const String operator+(const String& s1);
    String& operator=(const String& s1);
    char *GetString() { return data;};
  private:
    char *data;
  };

  #include "Cstr.h"
  String::String(const char *value)
  {
    if(value) {
      data = new char[strlen(value) + 1];
      strcpy(data,value);
    } else {
      data = new char[1];
      *data = '\0';
    }
  }
  const String String::operator+(const String& s1)
  {
    String tmp;
    tmp.data = new char[strlen(s1.data) +
    strlen(data) + 1];
    strcpy(tmp.data,data);
    strcat(tmp.data,s1.data);
    return tmp;
  }
  String& String::operator=(const String& s1)
  {
    if(this == &s1) return *this;
    data = new char[strlen(s1.data) + 1];
    strcpy(data,s1.data);
    return *this;
  }

TopPageへ