#include<iostream> using namespace std; class abc { public: int i; abc(int i){ i = i; } }; main(){ abc m(5); cout<<m.i; }
时间: 2023-07-14 14:09:05 浏览: 182
你的代码中有一个类叫做abc,它有一个公共变量i。类abc有一个构造函数,参数为int型的i。在构造函数中,你试图将参数i赋值给类的成员变量i,但是由于参数名和成员变量名相同,所以会导致赋值不成功。在主函数中,你创建了一个abc类的对象m,并将参数值设为5。最后,输出m对象的成员变量i。根据你的代码逻辑,期望输出结果应该是5。
相关问题
#include<iostream> using namespace std; class abc { public: int i; abc(int i) { i =i; } }; main() { abc m(5); cout<<m.i;}
你的代码有一个小错误。在构造函数中,你应该使用成员初始化列表来初始化类成员变量,而不是在构造函数体内进行赋值。修正后的代码如下:
```cpp
#include<iostream>
using namespace std;
class abc {
public:
int i;
abc(int i) : i(i) {
}
};
int main() {
abc m(5);
cout << m.i;
return 0;
}
```
这样修改后,输出结果将为 `5`。
#include <iostream> using namespace std; class A { public: A() { cout << "A"; } class B { public: B() { cout <<"B"; } }; class C: public A { public: C() { cout << "C"; }private: B b; int main () { Cobi; return O;}请解释一下以上代码
以上代码定义了一个名为A的类,其中包含了一个名为B的嵌套类。B类的构造函数中输出字符“B”。在A类中还定义了一个名为C的子类,C类的构造函数中输出字符“C”。C类继承自A类,因此在C类的构造函数中会先调用A类的构造函数,输出字符“A”。在C类的私有成员中还有一个名为b的B类对象,因此在创建C类对象时,会先创建B类对象,输出字符“B”,然后创建A类对象,输出字符“A”,最后创建C类对象,输出字符“C”。
上述代码中还存在一些问题。首先,main函数应该是全局函数,而不是C类的成员函数。其次,在main函数中,应该创建C类的对象,而不是Cobi。此外,代码中缺少类的结束标志“}”,因此无法编译通过。修改后的代码如下所示:
```
#include <iostream>
using namespace std;
class A {
public:
A() { cout << "A"; }
class B {
public:
B() { cout <<"B"; }
};
class C: public A {
public:
C() { cout << "C"; }
private:
B b;
};
};
int main () {
A::C c;
return 0;
}
```
以上代码可以正确输出字符“ABC”,表示创建C类对象时,先创建B类对象,输出字符“B”,然后创建A类对象,输出字符“A”,最后创建C类对象,输出字符“C”。
阅读全文