引用的错误引发的bug

来源:互联网 发布:丁红玉的淘宝店 编辑:程序博客网 时间:2024/05/22 04:31

最近在服务中,遇见一个隐晦的bug,这也是对引用的使用忽视导致的。


Person.h


#ifndef PERSON_H_
#define PERSON_H_
#include <stdio.h>
#include <iostream>


using namespace std;


class Person {
public:
Person(int p_age):age(p_age){


}
int get_age(){
return age;
}
virtual ~Person(){
cout << age << endl;
}
private:
int age;
};


#endif /* PERSON_H_ */



main:

#include "Person.h"
using namespace std;


Person c(11);


int main() {
Person a(10);
Person& b=a;
b=c;
}


最终析构的时候,结果都是11,我们忽视了引用和指针的差别,把引用当成了指针在使用,

大家在用引用的时候要千万小心,引用被赋值以后,千万别试图去修改引用所指的对象。
任何对引用的修改,实际上是对所指对象的修改。

原创粉丝点击