Temporary Variable in C++
来源:互联网 发布:重庆大学网络自助 编辑:程序博客网 时间:2024/06/04 18:27
#include "TestTempVar.h"#include <iostream>using namespace std;namespace {struct TempClass{TempClass() : privateCount(count) { ++count; cout << "TempClass " << privateCount <<" ctor" << endl; }~TempClass() { cout << "TempClass " << privateCount << " dtor" << endl; }TempClass(const TempClass& t){privateCount = count++;cout << "TempClass " << privateCount << " copy ctor" << endl;}TempClass& operator= (TempClass& t){ if (&t != this) {privateCount = count++;}cout << "TempClass " << privateCount << " operator=" << endl;return *this;}private:static int count;int privateCount;};int TempClass::count = 1;void testInput(TempClass& t){cout << "testInput begin" << endl;cout << "testInput return" << endl;}TempClass testReturn(){cout << "testReturn return" << endl;return TempClass();}TempClass& testReturnRef(){cout << "testReturn return" << endl;return TempClass();}}void testTemporaryVariable(){cout << "TempClass();" << endl;TempClass(); cout << "TempClass(); done" << endl << endl;cout << "TempClass& t = TempClass();" << endl;TempClass& t = TempClass();cout << "TempClass& t = TempClass(); done" << endl << endl;cout << "testInput(TempClass());" << endl;testInput(TempClass());cout << "testInput(TempClass()); done" << endl << endl;cout << "TempClass result = testReturn();" << endl;TempClass result = testReturn();cout << "TempClass result = testReturn(); done" << endl << endl;cout << "TempClass& refResult = testReturn();" << endl;TempClass& refResult = testReturn();cout << "TempClass& refResult = testReturn(); done" << endl << endl;cout << "TempClass& refResult2 = testReturnRef();" << endl;TempClass& refResult2 = testReturnRef();cout << "TempClass& refResult2 = testReturnRef(); done" << endl << endl;}
直接上代码和输出,大家就明白其中的原理了。
TempClass();TempClass 1 ctorTempClass 1 dtorTempClass(); doneTempClass& t = TempClass();TempClass 2 ctorTempClass& t = TempClass(); donetestInput(TempClass());TempClass 3 ctortestInput begintestInput returnTempClass 3 dtortestInput(TempClass()); doneTempClass result = testReturn();testReturn returnTempClass 4 ctorTempClass result = testReturn(); doneTempClass& refResult = testReturn();testReturn returnTempClass 5 ctorTempClass& refResult = testReturn(); doneTempClass& refResult2 = testReturnRef();testReturn returnTempClass 6 ctorTempClass 6 dtorTempClass& refResult2 = testReturnRef(); doneTempClass 5 dtorTempClass 4 dtorTempClass 2 dtor
- Temporary Variable in C++
- Split Temporary Variable
- Static variable in Objective C
- Temporary Tables and Table Variable
- How to Use Temporary Variable
- D:\vcfile\4.c(6) : warning C4172: returning address of local variable or temporary
- swap two values without temporary variable
- Split Temporary Variable(剖解临时变量)
- returning address of local variable or temporary
- java 代码细节(split temporary variable)
- 6.6 Split Temporary Variable(分解临时变量)
- Functions with Variable Argumet lists in C using va_list
- C Variable
- Temporary failure in name resolution
- 转 -- Temporary tablespaces in RAC
- Temporary failure in name resolution
- Temporary failure in name resolution
- What are the differences between a pointer variable and a reference variable in C++?
- Android 之 内存管理
- Sicily1031. Campus
- linux蓝牙配置
- 设置UIButton字体的大小
- (转)写代码如坐禅:你是哪一类程序员
- Temporary Variable in C++
- wav文件格式分析详解
- 学习STL(一)
- 设置默认浏览器
- 联想B450笔记本拆解步骤
- iPhone开发 如何将迁移到xcode4.2
- 学习STL(二)
- 本地IP
- ASP.NET 在线QQ浮动咨询代码