码迷,mamicode.com
首页 > 其他好文 > 详细

引用作为类的成员

时间:2019-11-15 12:04:36      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:const   clu   str   构造   public   stream   调用   pre   span   

#include <iostream>
#include <stdio.h>

using std::cout;
using std::endl;

class A{
public:
    A(int a):r(a){printf("A::r %p\n", &r);}
    int & r;
};

int main()
{
    cout << sizeof(A)<<endl;
    int a = 0;
    printf("outer a %p\n", &a);
    A b(a);
    return 0;
}

 

首先,sizeof(A)是8(64位系统),因为引用底层是用指针实现的。

 

其次,A的构造函数是有bug的。因为A.r引用的是形参。这个形参在构造函数调用的栈上,构造函数结束后立马销毁。

正确版本:

A(const int &a):r(a){}

引用作为类的成员

标签:const   clu   str   构造   public   stream   调用   pre   span   

原文地址:https://www.cnblogs.com/buddho/p/11865276.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!