我可以使用非默认数据类型作为1行中函数的参数吗?

时间:2013-08-22 06:34:23

标签: c++ function arguments

我认为问题的标题有点令人困惑,所以我会解释一下。

让我们看看这个非常简单的代码。

#include <iostream>

class C {
public:
    int val;

    C(){
        val = 2;
    }

    void changeVal(int i){
        val = i;
    }

};

void printout(int val){
    std::cout << "int val : " << val << std::endl;
}

void printout(C c){
    std::cout << "class val : " << c.val << std::endl;
}

int main()
{
    C c;
    printout(1);
    printout(c);    

    //printout(C());    // ok, I can understand it.
    //printout(C().changeVal(0)); /// ?????
    return 0;
}

如您所见,函数'printout'用于打印输入参数。 我的问题是,当我使用int值(默认数据类型)时,我只是输入函数实数'1',但是,当我使用我的类实例('class C')时,我必须声明我的类函数之前的实例。

那么,有没有办法在1行中为函数参数制作这种非默认数据类型?

实际情况是,我必须使用4x4矩阵作为某些函数的参数。 出于这个原因,我必须制作一些矩阵,并初始化(使其为零)并使用它。 但是,如果我只用一行做同样的工作,我的源代码将比现在更清晰。

这是我的问题。我希望你能理解我的问题。谢谢。

1 个答案:

答案 0 :(得分:2)

你可以传递一个临时的:

printout(C());

请注意,由于您不需要C参数的副本,因此通过const引用传递它会更有意义:

void printout(const C& c) { ... }