将对象分配给c ++中的值时会发生什么

时间:2017-09-05 09:55:35

标签: c++ oop

检查以下代码:

#include<iostream>
using namespace std;

class example
{
    public:
    int number;

    example()
    {
        cout<<"1";
        number = 1;
    }

    example(int value)
    {
        cout<<"2";
        number = value;
    }

    int getNumber()
    {
        cout<<"3";
        return number;
    }
};

int main()
{
    example e;
    e = 10;
    cout<<e.getNumber();
    return 0;
}

上述代码的输出是什么。另外,我想知道将对象直接分配给值时会发生什么。编译器将如何解释它?

1 个答案:

答案 0 :(得分:0)

首先输入

example e;

所以第一个构造函数调用并且1打印

example()
{
    cout<<"1";
    number = 1;
}

输出:

1

然后你输入: e=10它等于e = example(10);所以另一个构造函数叫做:

example(int value) /// beacause you used example(10)
{
    cout<<"2";
    number = value;
}

所以你的输出是:

12

number2 最后在:

cout<<e.getNumber();


3 is couted but in the other hand value is `10`    

因为number = value number 1012310  所以在最后你的输出是:

{{1}}
  

感谢@StoryTeller编辑解释