临时对象的来源
来源:互联网 发布:故宫纪录片知乎 编辑:程序博客网 时间:2024/04/30 03:59
例1
- #include<iostream>
- using namespace std;
- class Base
- {
- public:
- int a;
- int b;
- Base(){cout<<"base"<<endl;}
- Base(Base &b){cout<<"base(&)"<<endl;}
- ~Base(){cout<<"~base"<<endl;}
- void mf(){cout<<"B::fun()"<<endl;}
- };
- class Derived:public Base
- {
- public:
- int c;
- Derived(){cout<<"Derived"<<endl;}
- Derived(Derived &d){cout<<"Derived(&)"<<endl;}
- ~Derived(){cout<<"~Derived"<<endl;}
- void mf(){cout<<"D::fun()"<<endl;}
- };
- void func(Base& d)//切割,只引用了D类中B的部分。
- {
- cout<<sizeof(d)<<endl;
- d.mf();
- cout<<"func"<<endl;
- }
- int main()
- {
- Derived d;
- func(d);
- getchar();
- return 0;
- }
例2:
- #include<iostream>
- using namespace std;
- class Base
- {
- public:
- int a;
- int b;
- Base(){cout<<"base"<<endl;}
- Base(Base &b){cout<<"base(&)"<<endl;}
- ~Base(){cout<<"~base"<<endl;}
- void mf(){cout<<"B::fun()"<<endl;}
- };
- class Derived:public Base
- {
- public:
- int c;
- Derived(){cout<<"Derived"<<endl;}
- Derived(Derived &d){cout<<"Derived(&)"<<endl;}
- ~Derived(){cout<<"~Derived"<<endl;}
- void mf(){cout<<"D::fun()"<<endl;}
- };
- void func(Derived& d)
- {
- cout<<sizeof(d)<<endl;
- d.mf();
- cout<<"func"<<endl;
- }
- int main()
- {
- Derived d;
- func(d);
- getchar();
- return 0;
- }
结果:‘
例3:reference-to-const 参数,产生临时变量
- #include<iostream>
- using namespace std;
- class Base
- {
- public:
- int a;
- int b;
- Base(int x){cout<<"base"<<endl;}
- Base(Base &b){cout<<"base(&)"<<endl;}
- ~Base(){cout<<"~base"<<endl;}
- void mf(){cout<<"B::fun()"<<endl;}
- };
- void func(const Base& b) //func(Base& b)则编译不通过
- {
- cout<<sizeof(b)<<endl;
- // b.mf();//编译不通过,b是隐式转换的临时变量时,不能调用Base的成员函数。
- cout<<"func"<<endl;
- }
- int main()
- {
- int x=9;
- func(1);//隐式转换。Int->Base.
- getchar();
- return 0;
- }
1.任何时候只要看到一个reference-to-const参数,就极可能会产生一个临时对象,绑定至该参数上。
2.任何时候只要你看到一个函数返回一个对象,就会产生临时对象(并于稍后销毁)。
- 临时对象的来源
- 临时对象的来源
- 临时对象的来源
- 理解临时对象的来源
- 理解临时对象的来源
- 19. 了解临时对象的来源
- 9.深刻理解临时对象的来源
- 条款19 了解临时对象的来源
- 条款十九:了解临时对象的来源
- c++临时对象的来源即成本
- [More Effective C++]条款十九:理解临时对象的来源
- [More Effective C++]条款十九:理解临时对象的来源
- 条款19了解临时对象的来源 练习
- 效率:条款19 了解临时对象的来源
- More Effective C++----(19)理解临时对象的来源
- 了解临时对象的来源 (深刻理解为什么不能返回一个临时变量的引用)
- 理解临时对象的来源(More Effective C++_19(效率))
- More Effective C++ ——019_理解临时对象的来源
- 从程序员到项目经理(四):外行可以领导内行吗
- mongodb的启动总忘,记一笔!
- hd2 刷wp7后内存卡不能识别
- 一小段摘抄
- Python 于 webgame 的应用(上)
- 临时对象的来源
- basex - XML数据库 浅谈
- 偏执狂的原创伤感日志:珍惜你们的缘分;幸福
- 异常处理总结(一)
- 注index buffers和vertex buffers不能同时使用D3DPOOL_MANAGED和D3DUSAGE_DYNAMIC创建
- IOS开发之关键字synchronized
- vc6.0配置头文件,和库文件
- 不是读后感的读后感
- 贪财的富翁