C++学习小记
程序员文章站
2024-03-07 13:34:51
...
很久没有写技术博客了,年后过来没有多少编程的工作,就这样一直荒废到现在,强烈的离职冲动充斥在我心里,可又不甘心这么就走了,慢慢拖拖做了一年的游戏还没有上线,如果就这么走了那可真是白玩了!回想这一年,游戏改版多次,翻做了很多次,自己也是只有编程半年,然后玩了半年!最近特别荒废,每天上班就是玩游戏,看新闻,玩微博,似乎很惬意,可谁知我心里的空虚!
这段时间在复习学习C++,虽然大学学过,不过都差不多还老师了,现在复习,也没有多大难度,只是知识点太多,想掌握全面又不太可能,看完了C++基础教材,最近在看Effective C++,讲的很好,下面记录一点,这一点和Java很不同!
#include<iostream>
using namespace std;
class Stu{
public:
Stu(){
cout<<"init"<<endl;
}
Stu(Stu &s){
cout<<"copy constructor"<<endl;
}
~Stu(){
cout<<"deconstructor"<<endl;
}
private:
string s1;
string s2;
};
Stu getstu(Stu s){return s;};
int main(){
Stu s1;
getstu(s1);
//system("pause");
return 0;
}
这段代码运行时的结果是啥?
写道
init
copy constructor
copy constructor
deconstructor
deconstructor
deconstructor
copy constructor
copy constructor
deconstructor
deconstructor
deconstructor
很惊讶吧,在Java里,对象只会被创建一次,函数的传值都是引用,在C++里变成了对象的拷贝复制,返回也是复制,所以变成了构造一次,拷贝构造2次的结果。可见,在C++里对象传值最好用引用方式。