#include <iostream> using namespace std; class A { public: int val; A(int // 在此处补充你的代码 }; int main() { int m,n; A a; cout << a.val << endl; while(cin >> m >> n) { a.GetObj() = m; cout << a.val << endl; a.GetObj() = A(n); cout << a.val<< endl; } return 0; }
时间: 2024-02-26 16:55:45 浏览: 40
代码中缺少A类的构造函数的实现。下面是完整的代码实现:
#include <iostream>
using namespace std;
class A {
public:
int val;
A(int n = 0) { // 构造函数
val = n;
}
A& GetObj() { // 返回引用
return *this;
}
};
int main() {
int m,n;
A a;
cout << a.val << endl;
while(cin >> m >> n) {
a.GetObj() = m;
cout << a.val << endl;
a.GetObj() = A(n);
cout << a.val<< endl;
}
return 0;
}
相关问题
#include<iostream> using namespace std; class abc { public: int i; abc(int i){ i = i; } }; main(){ abc m(5); cout<<m.i; }的输出结果
该代码的输出结果将是一个不确定的值,而不是期望的5。这是因为在构造函数中,你试图将参数i赋值给类的成员变量i,但是由于参数名和成员变量名相同,所以赋值操作实际上是将参数i赋值给自身,而不是类的成员变量。因此,类的成员变量i保持不变,仍然是一个未初始化的值。因此,输出结果将是一个未定义的值。为了解决这个问题,你可以使用初始化列表来正确地初始化成员变量。修改构造函数如下:
```cpp
abc(int val) : i(val) {
}
```
这样,参数val会被正确地赋值给类的成员变量i,输出结果将会是期望的5。
根据下面给出的程序运行结果补全程序代码。 /* 运行输出 58 68 hi */ #include <iostream> using namespace std; class myclasstemplte { private: T value; public: // }; int main() { myclasstemplte < int > i(58); cout << i.getValue() << endl; i.setValue(68); cout << i.getValue() << endl; myclasstemplte < string > s("Hello"); s.setValue("hi"); cout << s.getValue() << endl; return 0; }
```
#include <iostream>
using namespace std;
template <typename T> // 模板声明
class myclasstemplte {
private:
T value;
public:
myclasstemplte(T val) { // 构造函数
value = val;
}
T getValue() { // 获取value值
return value;
}
void setValue(T val) { // 设置value值
value = val;
}
};
int main() {
myclasstemplte<int> i(58); // 实例化int类型的对象
cout << i.getValue() << endl;
i.setValue(68);
cout << i.getValue() << endl;
myclasstemplte<string> s("Hello"); // 实例化string类型的对象
s.setValue("hi");
cout << s.getValue() << endl;
return 0;
}
```