C++ 类对象的初始化问题 A a = 10

beckham_zb 发布于 2014/07/07 11:05
阅读 390
收藏 0

class A{

public:

    A(int n = 0):value(n){}

    A(const A& a){

        value = a.value;

    }

private:

    int value;

};

int main(){

    A a = 10;

}

定义了一个类A,在main函数中使用A a = 10;对于此初始化过程不太清楚,请大神给解释下哈!谢谢啦!

加载中
0
一如当初
一如当初

因为你的 A(int n = 0) 没有使用explicit关键字修饰。所以A a = 10; 会调用这个构造函数。

比如你改成这样就不可以了。

explicit A(int n = 0) :value(n){}

explicit会禁止隐式的调用构造函数。

b
beckham_zb
@一如当初 哦,这样啊
一如当初
一如当初
回复 @beckham_zb : 10是右值引用,会直接调用(int)构造函数。没有临时变量。
b
beckham_zb
我能否这么理解:先将10赋值给一个int型的临时变量,再用这个临时标量对a进行初始化(调用构造函数)
b
beckham_zb
明白了,谢谢哈
0
魔神翼
魔神翼

没有重载=运算符就能这么赋值?

我C++学得不好,不要骗我

魔神翼
魔神翼
回复 @一如当初 : 好吧,看来我学Java是正确的选择
一如当初
一如当初
这个会调用A(int n = 0)构造函数。
返回顶部
顶部