标题:构造函数调用问题,求教。
取消只看楼主
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
结帖率:87.5%
已结贴  问题点数:5 回复次数:3 
构造函数调用问题,求教。
我有如下疑问请教各位,谢谢。
定义类cam如下
程序代码:
class cam
{
    
    int m_x;
    float m_y;
    cam getcam(int a,float b)
        {
            return cam{a,b};
         }
}

int main()
{
    int a=1;
    float b=2;
    cam c1;
    int c=c1.getcam(a,b).m_x;
}

如果运行面代码,程序不报错,其中成员函数getcam()中 return cam{a,b}可调用构造函数完成对象构造。
但如果自己定义了无参默认构造函数却会报错。会提示缺乏与之对应的有参构造函数。
我想了解,如果自己不生命和定义构造函数的话,上面代码调用的是什么构造函数,是默认构造函数吗?为什么其可以接受两个参数呢?谢谢
搜索更多相关主题的帖子: 定义 构造函数 float 调用 int 
2021-12-28 16:50
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
得分:0 
回复 2楼 rjsp
谢谢提醒
2021-12-28 20:25
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
得分:0 
回复 楼主 wolfcan
帖子代码修改如下,问题如上
程序代码:
#include <iostream>
#include <string>
using namespace std;
class cam
{
public:
    int m_x;
    float m_y;
    cam getcam(int a, float b)
    {
        return cam{a,b};
    }
};
int main()
{    
    int a = 1;
    float b = 2;
    cam c1;
    int c = c1.getcam(a, b).m_x;
    cout << c << endl;
}


[此贴子已经被作者于2021-12-28 20:27编辑过]

2021-12-28 20:26
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
得分:0 
回复 5楼 rjsp
谢谢根据你的提示,又学到了什么叫聚合体,非常感谢
2021-12-30 17:13



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




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

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