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;
}