引用数据类型用自己初始化,这是什么语义?
今天无意中发现,引用型类成员变量用自己初始化自己,居然编译得过,而且还能用,但这是什么语义呢?不知是否标准?
- C/C++ code
class base{public: base(int& data_) : data(data) {} void func() {++data; cout << &data << " " << data << endl;}protected: int& data;}编译环境:ubuntu 12.04 LTS + g++4.6.3
vc没试过,电脑里面没有。
[解决办法]
参数名不要和成员变量名重名。
[解决办法]
和下面这句一样
- C/C++ code
int& a = a;
[解决办法]
本来也可以, 就算为空,那也是一个引用吧? 用一个引用初始化另一个引用, 语法正确的。。。
编译器不管两个引用是否 指向同一个对象
int nA;
int& aa = nA;
int& bb = aa;
这样的语法不一样正确?
[解决办法]
楼主,不要浪费生命,讨论c++标准漏出来的bug feature