我一定对 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++
为什么这行得通?我认为非原始类型不能按值传递?!