任何人都可以解释我上面的代码如何工作和使用哪个概念?

时间:2017-05-14 10:19:27

标签: c++

 #include<iostream>

  using namespace std;

    class A
   {

   public:
   A(int x)
   {
   a=x;
    }

   int a;
    };

  void fun(A temp)
  {
  cout<<temp.a<<endl;
  }

  int main()
  {
  fun(1);
   }

这里我们将原始值传递给fun方法并使用   A类的对象  任何人都可以解释我上面的代码如何工作和使用哪个概念?

2 个答案:

答案 0 :(得分:0)

A类有一个构造函数,它接收一个整数作为参数。

因此,传递给fun的整数参数会自动转换为A.

在这个自动演员过程中,创建了一个A对象(称为temp),它的字段'a'用1初始化。

答案 1 :(得分:0)

我为您评论了代码并使其更清晰易读。 阅读(1) - &gt;中的评论。 (5)。

#include <iostream>

using namespace std;

class A {

public:
    A(int x) // (3): gets called by f to initialize an object of class A with x=1
    {
        a = x;
    }

    int a;
};

void fun(A temp) // (2): Assumes 1 is a type class A. But it hasn't yet been initialized. So it calls Constructor. (tmp = new A(1))
{
    // (4): Now temp is an object of class A
    cout << temp.a << endl; // Prints temp.a
    // (5): temp object is getting destroyed.
}

int main()
{
    fun(1); // (1): Calls fun() with argument of 1
}