首页 > 编程语言 > 详细

C++中的const关键字学习笔记

时间:2019-04-02 22:38:12      阅读:176      评论:0      收藏:0      [点我收藏+]

1. 例子一

#include <iostream>
using namespace std;

class sp {

public:
    sp() {cout<<"sp()"<<endl;}
    sp(sp *other) {
        cout<<"sp(sp *other)"<<endl;
    }
    /*
     * 此例子中这个拷贝构造函数要么不存在,
     * 只要存在参数必须加const修饰。
     */
    sp(const sp &other) {
        cout<<"sp(sp &other)"<<endl;
    }
    ~sp() {
        cout<<"~sp()"<<endl;
    }
};

int main(int argc, char **argv)
{
    sp other = new sp();
    return 0;
}

执行结果:

sp()
sp(sp *other)
~sp()

1.拷贝构造函数没有使用但是其参数必须是const引用的原因

sp other = new sp();
① new sp()生成一个sp*的临时指针变量。
② 然后使用这个临时的sp*为参数调用构造函数sp(sp *other)构造出一个临时的sp对象。
③ 使用这个临时的sp对象来调用拷贝构造函数来初始化sp other。
由于此例中拷贝构造函数的参数传递的是一个sp的临时变量,所有需要是const引用。

从执行结果上拷贝构造函数的确没有调用,那是高版本的编译器做了优化,但是在编译期编译器仍然做了检查,所以会报这个错!

2.const引用就不可再拷贝构造函数中修改参数other的成员了(read only), 也不存在这个需求。

 

C++中的const关键字学习笔记

原文:https://www.cnblogs.com/hellokitty2/p/10645807.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!