C++ FAQs学习笔记
来源:互联网 发布:苏州大学知博书店 编辑:程序博客网 时间:2024/05/21 11:08
这里的auto_ptr挺有意思。改编了范例程序如下:
#include <iostream>
#include <memory>
using namespace std;
class Car
{
static int carObjCount;
int carObjID;
public:
Car()
{
carObjCount++;
carObjID = carObjCount;
cout << "Car() " << carObjID << endl;
}
~Car()
{
cout << "~Car() " << carObjID << endl;
}
void startEngine()
{
cout << "startEngine() " << carObjID << endl;
}
};
int Car::carObjCount = 0;
typedef auto_ptr<Car> CarPtr;
void f(Car& c)
{
cout << "f(Car& c) in" << endl;
c.startEngine();
cout << "f(Car& c) out" << endl;
}
void g(CarPtr p)
{
cout << "g(CarPtr p) in" << endl;
p->startEngine();
cout << "g(CarPtr p) out" << endl;
}
int main()
{
cout << "Main() in" << endl;
Car c;
c.startEngine();
CarPtr p(new Car());
f(*p);
g(p);
cout << "Main() out" << endl;
}
尝试注释掉 g(p); 这句,输出果然不一样。CarPtr在g(p)后果然不能用了。查C++ Primer,原来auto_ptr的copy比较特殊,其实是transfer。copy后,原来那个auto_ptr就unbound了,它保存的指针给别人了。
- C++ FAQs学习笔记
- C Programming FAQs: Frequently Asked Questions 笔记
- C Programming - Just the FAQs
- C, C++, MFC, and Windows API FAQs
- C Programming FAQs: Frequently Asked Questions
- c语言常见问题——读c programming FAQs
- 评C++经典问答第二版(C++FAQs second edition)
- Aftet Reading My Thinking Abotu C Programming FAQs 495
- C++/C学习笔记
- UDDI FAQs
- ABAP FAQs
- NAT FAQS
- AIX FAQS
- SIP FAQs
- SA FAQs
- SysLink FAQs
- RFID & FAQs
- Struts FAQs
- 修改导入表HOOK API(ring3_iat_exe_hook_Messagebox)
- 一些常用到的文件路径相关的API
- 【最小费用最大流+邻接表】POJ 2135
- C++返回引用
- boost中shared_lock和unique_lock的区别
- C++ FAQs学习笔记
- 一些C/C++的实用HOWTO备忘
- little endian和big endian
- 《Optimizing for SSE: A Case Study》的读后感
- C语言里求类型BIT数
- HDU 4140
- SUBPIXEL精度
- 今天学到一个高招
- 切换到64BIT VISTA后VS不能DEBUG的问题