注册 登录
编程论坛 C++教室

小白关于c++函数问题

yasmin 发布于 2016-08-07 20:18, 2098 次点击
程序代码:

#include <iostream>
using namespace std;

class A
{
    public:
    int a;
   
    A(int a)
    {
    this->a = a;
    cout << this->a <<endl;
}
};

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

int main()
{
    A a(1);
    fun(9);
}


全局函数中有没有创建了一个a对象呢 ,如果有那不是冲突了吗 结果显示打印出9 求大神解释下啊
3 回复
#2
rjsp2016-08-07 21:10
全局函数中有没有创建了一个a对象呢 --- 没听懂
如果有那不是冲突了吗 --- 没听懂

fun(9) 时,通过9创建了一个匿名临时A对象。
为了避免这种操蛋的隐式构造,你可以
explicit A(int a)
#3
yasmin2016-08-07 21:15
回复 2楼 rjsp
大神我就是想问下在fun()里面我调用了a.a  但是如你所说的fun建立的是一个匿名对象 那为什么输出的是这个匿名对象的a值呢?
#4
rjsp2016-08-07 21:32
fun(9);
就相当于
fun( A(9) );
1