我对C++11有一个基本的误解。我的教授告诉我,除了引用或指针,无法传递非原始类型的参数给函数。但是,以下代码可以正常工作。
运行该程序会产生以下输出结果。
#include <iostream>
using namespace std;
class MyClass
{
public:
int field1;
};
void print_string(string s) {
cout << s << endl;
}
void print_myclass(MyClass c) {
cout << c.field1 << endl;
}
int main(int argc, char *argv[])
{
string mystr("this is my string");
print_string(mystr); // works
MyClass m;
m.field1=9;
print_myclass(m);
return 0;
}
运行该程序会产生以下输出结果。
this is my string
9
RUN SUCCESSFUL (total time: 67ms)
我在Win7上使用MinGW/g++。
为什么会这样工作?我以为非原始类型不能按值传递?!