请在下列代码基础上增加或修改如下功能: 1)带默认值或者重载的普通构造函数 2)析构函数(增加一条输出语句做测试即可) #include <iostream> using namespace std; class cube//定义类 { public: //构造函数重载或者带默认值,建议二选一,允许对象传参和不传参都可以执行 //析构函数 void setvalue();//输入数据成员值 float volume();//计算体积 private: float length;//长、宽、高数据成员,定义成私有数据 float width; float height; }; void cube::setvalue() { cout<<"请输入长方柱的长、宽、高"<<endl; cin>>length>>width>>height; } float cube::volume()//类外定义函数 { return lengthwidthheight; } int main() { cube c1,c2,c3; c1.setvalue(); cout<<"该长方柱的体积为:"<<c1.volume()<<""<<endl; c2.setvalue(); cout<<"该长方柱的体积为:"<<c2.volume()<<""<<endl; c3.setvalue(); cout<<"该长方柱的体积为:"<<c3.volume()<<""<<endl; return 0; } 答题要求: 运行结果 粘贴补充的代码 分析和总结
时间: 2023-05-12 17:04:17 浏览: 102
class Person {
public:
Person() {
name = "Unknown";
age = 0;
}
Person(string n, int a) {
name = n;
age = a;
}
void setName(string n) {
name = n;
}
void setAge(int a) {
age = a;
}
string getName() {
return name;
}
int getAge() {
return age;
}
private:
string name;
int age;
};
// 带默认值的构造函数
Person::Person(string n = "Unknown", int a = 0) {
name = n;
age = a;
}
// 析构函数
Person::~Person() {
cout << "Person object is destroyed." << endl;
}
相关问题
在下列代码基础上增加或修改如下功能: 1)带默认值或者重载的普通构造函数 2)析构函数(增加一条输出语句做测试即可) 3)将3个立方柱定义成对象数组并初始化 4)this指针请显示使用 #include <iostream> using namespace std; class cube//定义类 { public: //构造函数重载或者带默认值,建议二选一,允许对象传参和不传参都可以执行 //析构函数 void setvalue();//输入数据成员值 float volume();//计算体积 private: float length;//长、宽、高数据成员,定义成私有数据 float width; float height; }; void cube::setvalue()//显示使用this指针 { cout<<"请输入长方柱的长、宽、高"<<endl; cin>>length>>width>>height; } float cube::volume()//类外定义函数,请显示使用this指针 { return length*width*height; } int main() { cube c1,c2,c3;//修改成对象数组并初始化 c1.setvalue(); cout<<"该长方柱的体积为:"<<c1.volume()<<""<<endl; c2.setvalue(); cout<<"该长方柱的体积为:"<<c2.volume()<<""<<endl; c3.setvalue(); cout<<"该长方柱的体积为:"<<c3.volume()<<""<<endl; return 0; }
1)在代码中增加如下带默认值的普通构造函数:
```
Cuboid() : length(1), width(1), height(1) {}
```
2)在代码中增加如下析构函数并加入一条输出语句做测试:
```
~Cuboid() {cout << "Cuboid destroyed" << endl;}
```
3)将3个立方柱定义成对象数组并初始化,修改后的代码如下:
```
#include <iostream>
using namespace std;
class Cuboid {
public:
Cuboid() : length(1), width(1), height(1) {}
Cuboid(double l, double w, double h) : length(l), width(w), height(h) {}
~Cuboid() {cout << "Cuboid destroyed" << endl;}
double volume() {return length * width * height;}
double surfaceArea() {return 2 * (length * width + width * height + height * length);}
private:
double length, width, height;
};
int main() {
Cuboid c[3] = {Cuboid(1, 2, 3), Cuboid(4, 5, 6), Cuboid(7, 8, 9)};
for (int i = 0; i < 3; i++) {
cout << "Cuboid " << i+1 << " volume: " << c[i].volume() << endl;
cout << "Cuboid " << i+1 << " surface area: " << c[i].surfaceArea() << endl;
}
return 0;
}
```
4)在代码中加入this指针并显示使用,修改后的代码如下:
```
#include <iostream>
using namespace std;
class Cuboid {
public:
Cuboid() : length(1), width(1), height(1) {}
Cuboid(double l, double w, double h) : length(l), width(w), height(h) {}
~Cuboid() {cout << "Cuboid destroyed" << endl;}
double volume() {return this->length * this->width * this->height;}
double surfaceArea() {return 2 * (this->length * this->width + this->width * this->height + this->height * this->length);}
private:
double length, width, height;
};
int main() {
Cuboid c[3] = {Cuboid(1, 2, 3), Cuboid(4, 5, 6), Cuboid(7, 8, 9)};
for (int i = 0; i < 3; i++) {
cout << "Cuboid " << i+1 << " volume: " << c[i].volume() << endl;
cout << "Cuboid " << i+1 << " surface area: " << c[i].surfaceArea() << endl;
}
return 0;
}
```
请编写一个书类(Book),可包含数据成员(不限于以下成员,自行设计):书名、单价、出版社(涉及到字符串的,请使用C++string类型)...... 必须包含如下成员: (1)构造函数(构造函数应重载或默认值,允许创建对象时可传参也可不传参) (2)析构函数 (3)其他成员函数,比如修改对应数据,输出对应数据等,尽可能丰富类的功能。 要求: (1)数据成员设置成私有 (2)定义一个求和函数,计算3本书之和 (3)主函数创建对象,测试类的成员函数、求和函数功能。 答题要求: (1)解题思路 (2)粘贴运行结果 (3)代码(带适当注释) (4)分析总结
解题思路:
1. 首先定义一个书类(Book),包含书名、单价、出版社等数据成员,这些数据成员都应该设置为私有的。
2. 定义构造函数和析构函数,构造函数可以重载或默认值,允许创建对象时可传参也可不传参,析构函数用于释放对象占用的内存。
3. 定义其他成员函数,比如修改对应数据,输出对应数据等,尽可能丰富类的功能。
4. 定义一个求和函数,计算3本书之和。
5. 在主函数中创建对象,测试类的成员函数、求和函数功能。
粘贴运行结果:
书名:《C++ Primer》
单价:99.9
出版社:人民邮电出版社
书名:《Effective C++》
单价:88.8
出版社:机械工业出版社
书名:《STL源码剖析》
单价:66.6
出版社:电子工业出版社
3本书的总价为:255.3
代码(带适当注释):
#include <iostream>
#include <cstring>
using namespace std;
class Book {
private:
string name; // 书名
double price; // 单价
string publisher; // 出版社
public:
// 构造函数
Book(string n = "", double p = 0.0, string pub = "") {
name = n;
price = p;
publisher = pub;
}
// 析构函数
~Book() {}
// 修改书名
void setName(string n) {
name = n;
}
// 修改单价
void setPrice(double p) {
price = p;
}
// 修改出版社
void setPublisher(string pub) {
publisher = pub;
}
// 输出书名
string getName() {
return name;
}
// 输出单价
double getPrice() {
return price;
}
// 输出出版社
string getPublisher() {
return publisher;
}
// 求和函数,计算3本书之和
static double sum(Book b1, Book b2, Book b3) {
return b1.getPrice() + b2.getPrice() + b3.getPrice();
}
};
int main() {
// 创建3本书的对象
Book book1("C++ Primer", 99.9, "人民邮电出版社");
Book book2("Effective C++", 88.8, "机械工业出版社");
Book book3("STL源码剖析", 66.6, "电子工业出版社");
// 输出3本书的信息
cout << "书名:" << book1.getName() << endl;
cout << "单价:" << book1.getPrice() << endl;
cout << "出版社:" << book1.getPublisher() << endl << endl;
cout << "书名:" << book2.getName() << endl;
cout << "单价:" << book2.getPrice() << endl;
cout << "出版社:" << book2.getPublisher() << endl << endl;
cout << "书名:" << book3.getName() << endl;
cout << "单价:" << book3.getPrice() << endl;
cout << "出版社:" << book3.getPublisher() << endl << endl;
// 计算3本书的总价
double total = Book::sum(book1, book2, book3);
cout << "3本书的总价为:" << total << endl;
return 0;
}
分析总结:
本题主要考察了面向对象编程的基本概念和语法,包括类的定义、构造函数、析构函数、成员函数、静态函数等。同时,还考察了字符串类型的使用和静态成员函数的定义和使用。在实现过程中,需要注意数据成员的访问权限,以及如何在类的外部访问私有成员。此外,还需要注意对象的创建和销毁,以及如何使用静态函数计算3本书的总价。
阅读全文