#include<iostream> using namespace std; class myclass { private: int i; float j; public: myclass(int x = 0, float y = 0) { i = x; j = y; } myclass operator () (int h, float m); void display() { cout <<i<< " " << j << "\n"; } }; myclass myclass::operator()(int k, float m) { i = k + 10; j = m + 7.5; return *this; } int main() { myclass a, b; b = a(3, 5.6); b.display(); }
时间: 2024-01-10 16:02:39 浏览: 50
这是一个 C++ 的程序,定义了一个名为 myclass 的类。这个类有两个私有成员变量 i 和 j,以及一个公有的构造函数和一个重载的括号运算符。构造函数有两个默认参数,可以用来初始化 i 和 j。括号运算符接受两个参数,将这两个参数加上常数后分别赋值给 i 和 j,并返回当前对象的引用。
在主函数中,创建了两个 myclass 类型的对象 a 和 b,然后通过 b = a(3, 5.6) 调用了括号运算符,并将运算结果赋值给了 b。最后调用 b.display() 方法输出了 b 对象的 i 和 j 值。根据程序的逻辑,输出的结果应该是 13 12.1。
代码已经很简洁,但可以考虑在 myclass 类中添加一个方法来输出对象的值,这样可以更好地封装类的数据和行为。修改后的代码如下:
相关问题
请在下列代码基础上增加或修改如下功能: 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 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)增加带默认值的普通构造函数:
```c++
class MyClass {
public:
int num;
string str;
MyClass(int n = 0, string s = "") : num(n), str(s) {}
};
```
2)增加析构函数:
```c++
class MyClass {
public:
int num;
string str;
MyClass(int n = 0, string s = "") : num(n), str(s) {}
~MyClass() {
cout << "MyClass object is destroyed." << endl;
}
};
```
阅读全文