C++的一些语法有问题

trouble with some syntax of C++

本文关键字:语法 有问题 C++      更新时间:2023-10-16
    #include<iostream>
using namespace std;
class A {
 public:
    A(int ii = 0) : i(ii) {}
    void show() { cout << "i = " << i << endl;}
 private:
    int i;
};
class B {
 public:
    B(int xx) : x(xx) {}
    operator A() const { return A(x); }
 private:
    int x;
};
void g(A a)
{  a.show(); }
int main() {
  B b(10);
  g(b);
  g(20);
  getchar();
  return 0;
} 

在上面的代码中,任何人都可以解释一下这条线是什么

A(int ii = 0) : i(ii) {}

平均值以及如何输出程序

i = 10
i = 20
A(int ii = 0) : i(ii) {}

类 A 的构造函数,构造函数的值为 ii ,并且初始化iii

输出

B b(10);
g(b);
g(20);

在此代码中,g(20) 是传递类 B 的临时实例。

因为,类 B 的构造函数不是explicit所以int B是可以的。

这是

声明构造函数以class A

A(int ii = 0) : i(ii) {}

这部分声明构造函数可以采用默认值为 0 的单个 int 参数。

A(int ii = 0)

这部分是使用参数 ii 中的值初始化成员变量i

i(ii)

A(int ii = 0) : i(ii) {}

是类 A 的构造函数,它需要一个参数ii,在初始值设定项列表中,该参数被分配给i 。然后它的身体什么都不做。

等效地,您拥有:

A(int ii = 0) : i(ii) {
 // do nothing
}

等效地 - 就结果而言 - 你有:

A(int ii = 0) {
  i = ii;
}