永发信息网

实现一个三维点的point类,构造函数,复制构造函

答案:1  悬赏:60  手机版
解决时间 2021-02-28 09:55
  • 提问者网友:骑士
  • 2021-02-27 09:44
实现一个三维点的point类,构造函数,复制构造函
最佳答案
  • 五星知识达人网友:一叶十三刺
  • 2021-02-27 10:53
编写程序:
1. 定义一个Point类来处理三维点points(x,y,z).该类有一默认的constructor,一copy constructor, 一negate()成员函数将point的x,y和z值各乘-1, 一norm()成员函数返回该点到原点(0,0,0)的距离,一个print()成员函数显示x,y,和z的值。

答:#include
#include
class Point
{ public:
Point(float x=0, float y=0, float z=0): x_(x), y_(y), z_(z) { }
Point(const Point& p) : x_(p.x_), y_(p.y_), z_(p.z_) { }
void negate() { x_ *= -1; y_ *= -1; z_ *= -1; }
double norm() { return sqrt(x_*x_ + y_*y_ + z_*z_); }
void print()
{ cout << '(' << x_ << "," << y_ << "," << z_ << ")";
}
private:
float x_, y_, z_;
};

void main()
{ Point p(12,-3,4);
cout << "p = ";
p.print();
cout << ", p.norm() = " << p.norm() << endl;
p.negate();
cout << "p = ";
p.print();
cout << ", p.norm() = " << p.norm() << endl;
}

2.定义一个Person类,它的每个对象表示一个人。数据成员必须包含姓名、出生年份、死亡年份,一个默认的构造函数,一析构函数,读取数据的成员函数,一个print()成员函数显示所有数据。

答:#include
class Person
{ public:
Person(char* =0, int =0, int =0);
~Person() { delete [] name_; }
char* name() { return name_; }
int born() { return yob_; }
int died() { return yod_; }
void print();
private:
int len_;
char* name_;
int yob_, yod_;
};

void main()
{ Person cb("Charles Babbage",1792,1871);
cb.print();
}

Person::Person(char* name, int yob, int yod)
: len_(strlen(name)),
name_(new char[len_+1]),
yob_(yob),
yod_(yod)
{ memcpy(name_, name, len_+1);
}

void Person::print()
{ cout << "\tName: " << name_ << endl;
if (yob_) cout << "\tBorn: " << yob_ << endl;
if (yod_) cout << "\tDied: " << yod_ << endl;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯