zoukankan      html  css  js  c++  java
  • const type qualifier in class member function

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

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

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

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

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

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

    代码
    #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;
    }
  • 相关阅读:
    ubuntu下安装eclipse
    UTC时间、GMT时间、本地时间、Unix时间戳
    [转]mysql使用关键字作为列名的处理方式
    mysql日期格式化
    ssh远程登陆看不到用户名和主机名
    ssh以root用户远程登录失败
    PowerBI发布到网页
    视图是否有主键的问题
    select count(*)和select count(1)
    PPT产品的重要性
  • 原文地址:https://www.cnblogs.com/aoaoblogs/p/1907717.html
Copyright © 2011-2022 走看看