#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-25 09:55:54 浏览: 20
在这段代码中,缺少A类的构造函数的定义。下面是一个可能的实现:
```
class A {
public:
int val;
A(int x = 0) : val(x) {}
A& GetObj() {
return *this;
}
};
```
构造函数的参数是可选的,如果没有提供参数,则val的默认值为0。GetObj()函数返回当前对象的引用,这使得我们可以使用赋值操作符来修改val的值。在主函数中,我们创建了一个A对象a,并输出了它的val值。之后,我们进入了一个while循环,读入两个整数m和n。然后,我们将a的val值设置为m,并输出它的值;接着,我们创建了一个新的A对象,其val值为n,并将其赋值给a,再次输出a的val值。这样,我们就可以通过GetObj()函数来修改A对象的val值。
相关问题
#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;
}
```