1. 下面类定义中有六处语法错误,请指出并改正:class A [ private: static int cnt; intх; public: A(int_ x):cnt(0)[x=. _х; cnt++;] A(const A& а) :х(а.x) [ cnt++;] ~A() l cnt--;] int get() const( return х; ] void set(int_ x)[xх=. _x;] static int count() const [ return cnt; ] ]; class B[ private: A a; int V; public: B(int_ x,int. _v) (а=A(_ x);v=. _v;]int getX() const [ return a.х; ] int getV() const [ return v; ] . void setX(int_ х) const [ a.set(_ х);]void setV(int. _v) [v= _v;]
时间: 2024-01-27 09:02:36 浏览: 62
修改后的类定义如下:
```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) { this->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) { this->v = v; }
};
```
修改内容如下:
1. 类A的构造函数中的 `cnt++;` 应该放在 `x = _x;` 语句后面。
2. 类A拷贝构造函数中的 `cnt++;` 应该放在 `x(a.x)` 语句后面。
3. 类A析构函数中的 `cnt--;` 后面应该删除多余的 `]` 符号。
4. 类A的成员函数 `get()` 和 `count()` 返回类型后面应该去掉多余的空格。
5. 类B成员函数 `setX()` 应该去掉 `const` 限定符。
6. 类B成员函数 `setV()` 中的变量名应该改为 `v`,而不是 ` _v`。
阅读全文