标题:构造函数调用问题,求教。
只看楼主
wolfcan
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2021-12-9
结帖率:87.5%
已结贴  问题点数:5 回复次数:5 
构造函数调用问题,求教。
我有如下疑问请教各位,谢谢。
定义类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
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
你这代码中有多处语法错误,不可能不报错。
你先把代码改正确,确保自己能够编译成功,再贴出来,否则别人猜不出你想问的是哪个错误。
2021-12-28 19:29
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
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:5 
你这个调用的不是构造函数,而是 聚合初始化。
如果你定义了构造函数,那它就不是一个聚合类了,怎么可能有 聚合初始化 ?
2021-12-28 20:38
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.019621 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved