欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

   很惊讶吧,在Java里,对象只会被创建一次,函数的传值都是引用,在C++里变成了对象的拷贝复制,返回也是复制,所以变成了构造一次,拷贝构造2次的结果。可见,在C++里对象传值最好用引用方式。