#include <iostream>
using namespace std;
class Foo
{
public:
Foo(int a = 0) : a_(a){}
Foo(const Foo& foo) { a_ = foo.a_; }
public:
int a_;
};
Foo a;
int func1(const Foo & foo = Foo() )
{
return foo.a_;
}
int func2(Foo & foo = a )
{
++foo.a_;
return foo.a_;
}
//func3 会出现如下编译错误
// error: invalid initialization of non-const reference of type ‘Foo&’ from an rvalue of type ‘Foo’
// void func3(Foo & foo = Foo() )
//void func3(Foo & foo = Foo() )
//{
//
//}
int main()
{
cout << a.a_ << endl; //输出 0
cout << func2() << endl; //输出 1
cout << a.a_ << endl; //输出 1
Foo b(10);
cout << func2(b) << endl; //输出 11
cout << a.a_ << endl; //输出 1
cout << b.a_ << endl; //输出 11
return 0;
}
引用与函数默认参数
最新推荐文章于 2022-01-24 16:35:30 发布