- 论坛徽章:
- 36
|
我的理解:引用的实现也是通过指针,返回临时对象的const 引用,虽然临时对象销毁了,但是引用通过地址取到“对象”
楼主可以参考下面代码调试:- #include <iostream>
- #include <fstream>
- #include <string>
- #include <cstdio>
- #include <cstring>
- using namespace std;
-
- class Foo{
- public:
- Foo():n(321){ printf("Foo(): %d %p\n", n, this); }
- ~Foo(){ n = 0; std::cout << "~Foo()\n"; }
- void *display() const { printf("Foo().display(): %d %p\n", n, this); return (void*)this; }
- private:
- int n;
- };
- const int& fwd(const int& i) {
- return i;
- }
- const Foo& fwd(const Foo& f) {
- return f;
- }
- int main() {
- const int& ir = fwd(4); //1
- const Foo& fr = fwd(Foo());//2
- Foo *pf = (Foo*)fr.display();
- new (pf)Foo();
- fr.display();
- getchar();
- }
复制代码 |
|