标题:小白关于c++函数问题
只看楼主
yasmin
Rank: 1
等 级:新手上路
帖 子:22
专家分:4
注 册:2016-7-22
结帖率:33.33%
已结贴  问题点数:20 回复次数:3 
小白关于c++函数问题
程序代码:
#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 求大神解释下啊
2016-08-07 20:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:14 
全局函数中有没有创建了一个a对象呢 --- 没听懂
如果有那不是冲突了吗 --- 没听懂

fun(9) 时,通过9创建了一个匿名临时A对象。
为了避免这种操蛋的隐式构造,你可以
explicit A(int a)
2016-08-07 21:10
yasmin
Rank: 1
等 级:新手上路
帖 子:22
专家分:4
注 册:2016-7-22
得分:0 
回复 2楼 rjsp
大神我就是想问下在fun()里面我调用了a.a  但是如你所说的fun建立的是一个匿名对象 那为什么输出的是这个匿名对象的a值呢?
2016-08-07 21:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
fun(9);
就相当于
fun( A(9) );
2016-08-07 21:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-467633-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.080133 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved