ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

[C++]类名加个括号是什么东东

2022-09-07 08:00:08  阅读:174  来源: 互联网

标签:5.5 加个 items C++ int MyTemp MyClass QList 类名


先考考大家,下面的代码,编译得过吗?

class MyClass
{
public:
    MyClass()
    {
        printf("MyClass\n");
    }
};
int _tmain(int argc, _TCHAR* argv[])
{
    MyClass();

    return 0;
}

关键点在于,有一行代码是这样的
MyClass()

来个更难点的,下面的能编译过吗?

template <class T> class MyTemp {
public:
    MyTemp(T arg)
    {
        t = arg;
        std::cout << t << std::endl;
    }

private:
     T t;
};

int _tmain(int argc, _TCHAR* argv[])
{
    MyTemp<double>(5.5);

    return 0;
}

关键点在于:
MyTemp<double>(5.5);




揭晓答案,先从QT的一行代码说起
{ insertRow(arow, QList<QStandardItem*>() << aitem); }
这个调用对应的函数为:

void QStandardItem::insertRow(int row, const QList<QStandardItem*> &items)
{
    Q_D(QStandardItem);
    if (row < 0)
        return;
    if (columnCount() < items.count())
        setColumnCount(items.count());
    d->insertRows(row, 1, items);
}

也就是说,
QList<QStandardItem*>() << aitem会对应成const QList<QStandardItem*> &items

那么
QList<QStandardItem*>()的意思就是会生成一个临时对象QList<QStandardItem*>

回到开头
MyClass()会成一个临时对象MyClass
MyTemp<double>(5.5);生成一个临时对象MyTemp<double>
就这样....

标签:5.5,加个,items,C++,int,MyTemp,MyClass,QList,类名
来源: https://www.cnblogs.com/xingzaicpp/p/16663966.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有