c++基础杂记

来源:互联网 发布:有限元分析用什么软件 编辑:程序博客网 时间:2024/05/22 12:08

1.左值与右值

左值:L-value中的L指的是Location,表示可寻址。左值可以表示对象,即具有对应的可以由用户访问的存储单元。左值表示存储在计算机内存的对象,即“可寻址值”。也就是可以用&来取地址的对象是左值。

右值:R-value中的R指的是Read,表示可读。指的是引用了一个存储在某个内存地址里的“数据”。

所以左值又可以归纳为:左值表示程序中必须有一个特定的名字引用到这个值。而右值引用的是地址里的内容,所以相反右值又可以归纳为:右值表示程序中没有一个特定的名字引用到这个值除了用地址

2.NULL和nullptr

c++11之前只有NULL来表示指针为空 也就是‘0’,c++11加了nullptr来表示空指针。(从理解上表述)两者的不同在于NULL的类型是int,nullptr的类型是指针,恰好空指针的值是‘0’和NULL相等,所以两者看上去很像。但是值相同类型不同这是区分二者的关键。例如http://www.cnblogs.com/feng-sc/p/5710724.html文章1.2节

class Test{public:    void TestWork(int index)    {        std::cout << "TestWork 1" << std::endl;    }    void TestWork(int * index)    {        std::cout << "TestWork 2" << std::endl;    }};int main(){    Test test;    test.TestWork(NULL);    test.TestWork(nullptr);}

运行记过结果分别是TestWork 1,TestWork 2。


原创粉丝点击