const type qualifier in class member function

主要是简单解释一下为什么要写这样一个函数,这两个const有什么意义。

const char* c_str() const{return m_str;};

1.首先说第二个const, 这个const意味this指针是一个const myString*, 所以对于变量constmyString c_myStr(ss); 才能调用c_myStr.c_str();

2.再说第一个const, 既然c_myStr是一个const类型的变量,自然是希望他不被改变。那么如果不加第一个const,那么c_str()的返回值就可以赋值给一个非const类型的变量,c_myStr将有可能变相地被改变。

还有一点小提示是第一个const修饰函数的返回值,第二个const修饰函数参数。C++的overload只考虑函数参数。

不妨把注释的那些代码去掉注释,看看编译器会报什么样的错误。

const type qualifier in class member functionconst type qualifier in class member function代码

#include <iostream>using std::cout;class myString{public:    myString(char *str = NULL):m_str(str){};    ~myString(){};    char* c_str(){return m_str;};    //char* c_str() const{return m_str;};    const char* c_str() const{return m_str;};private:    char * m_str;};int main(){    char ss[] = "Hello";    {        myString myStr(ss);        char* p = NULL;        const char * c_p = NULL;        p = myStr.c_str();        c_p = myStr.c_str();    }    {        const myString c_myStr(ss);        char* p = NULL;        const char * c_p = NULL;        //p = c_myStr.c_str();        c_p = c_myStr.c_str();    }    return 0;}

原文链接: https://www.cnblogs.com/aoaoblogs/archive/2010/12/16/1907717.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/18868

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月7日 下午7:47
下一篇 2023年2月7日 下午7:48

相关推荐