1. 下面类定义中有六处语法错误,请指出并改正:class A i private: static int cnt; int X; public: Alint_ x):cnt(0) i x = _x; cnt+t; 3 A(const A& a) :x(a.x) i cnt+t; f ~A() i cnt--; f int get() consti return x; f void setlint _x) ix=_x;f static int count() const i return cnt; f 3; class B i private: A a; int v; public: B(int_ x, int _v) { a = A(_x);v =_v; }int getX() const i return a.x; f int getV(O) const i return v; f void setX(int_ _x) const i a.set(_x); fvoid setV(int. _v) iv= _v; 3 3;
时间: 2024-01-26 16:05:22 浏览: 71
改正后的类定义如下:
```cpp
class A {
private:
static int cnt;
int x;
public:
A(int _x) : x(_x) { cnt++; }
A(const A& a) : x(a.x) { cnt++; }
~A() { cnt--; }
int get() const { return x; }
void set(int _x) { x = _x; }
static int count() { return cnt; }
};
int A::cnt = 0;
class B {
private:
A a;
int v;
public:
B(int x, int _v) : a(x), v(_v) {}
int getX() const { return a.get(); }
int getV() const { return v; }
void setX(int _x) { a.set(_x); }
void setV(int _v) { v = _v; }
};
```
修改内容如下:
1. 类A的构造函数参数列表中应该是 `int _x` 而不是 `Alint_ x`。
2. 类A构造函数中的 `x = _x; cnt+t;` 应该改为 `x = _x; cnt++;`。
3. 类A拷贝构造函数中的 `cnt+t;` 应该改为 `cnt++;`。
4. 类A析构函数中的 `cnt--; f` 应该改为 `cnt--;`。
5. 类A的成员函数 `get()` 和 `count()` 不能声明为 `const`。
6. 类B成员函数 `setX()` 应该去掉 `const` 限定符。
阅读全文