2、 阅读并测试下列程序,理解输出结果。 1)首先创建一个工程(project),例如Test3。 2)给工程Test3添加类。 选择File|New|class菜单,输入类名,添加一个A类。 在A.h文件中,完善如下代码进行类的声明: #include<iostream> using namespace std; class A { public: static int i1=1;//错误 static int i2; const static int i3=3; public: int j1; const int& j2; int& j3; const int j4; //情况1 A(int xx):j2(xx),j3(xx),j4(xx) { j1=xx;} //情况2 A(int xx) {j2=xx;j3=xx;j4=xx; j1=xx;} }; int A::i2=2;
时间: 2023-12-02 12:05:15 浏览: 64
pintos project2 源代码
这段代码存在以下错误:
1. 在类的声明中初始化静态成员变量时,不能在声明中直接赋值,需要在类的外部定义时进行赋值。因此,将 `static int i1=1;` 改为 `static int i1;`。
2. 在 A 类中,有 4 个成员变量,其中 j2 是 const 引用类型,j3 是非 const 引用类型,j4 是 const 非引用类型。情况1 中使用了 j2、j3、j4 三个成员变量进行了初始化,但是 j3 是一个非 const 引用类型,不可以在构造函数外部进行初始化,只能在构造函数初始化列表中进行初始化。因此,情况1 中需要将 `int& j3` 改为 `int& j3;`。
修改后的 A 类的声明如下:
```cpp
#include<iostream>
using namespace std;
class A {
public:
static int i1;
static int i2;
const static int i3;
public:
int j1;
const int& j2;
int& j3;
const int j4;
//情况1
A(int xx):j2(xx),j3(j1),j4(xx) {
j1=xx;
}
//情况2
A(int xx) {
j2=xx;
j3=j1;
j4=xx;
j1=xx;
}
};
int A::i1 = 1;
int A::i2 = 2;
const int A::i3 = 3;
```
测试代码如下:
```cpp
int main() {
A a1(10);
cout << "i1 = " << A::i1 << endl; //输出:i1 = 1
cout << "i2 = " << A::i2 << endl; //输出:i2 = 2
cout << "i3 = " << A::i3 << endl; //输出:i3 = 3
cout << "j1 = " << a1.j1 << endl; //输出:j1 = 10
cout << "j2 = " << a1.j2 << endl; //输出:j2 = 10
cout << "j3 = " << a1.j3 << endl; //输出:j3 = 10
cout << "j4 = " << a1.j4 << endl; //输出:j4 = 10
return 0;
}
```
输出结果如下:
```
i1 = 1
i2 = 2
i3 = 3
j1 = 10
j2 = 10
j3 = 10
j4 = 10
```
阅读全文