• C++编译错误cannot have cv-qualifier


    const关键字放在非静态成员函数声明的尾部,表示该非静态成员函数不修改对象内容。volatile关键字放到非静态函数声明的尾部,表示该非静态成员函数是线程安全的。注意他们都只能放到非静态成员函数声明的尾部,否则会产生如下报错:
    error: non-member function 'xxx' cannot have cv-qualifier

    放到非成员函数声明的尾部

    #include <iostream>
    
    using namespace std;
    
    double getSqureArea(int a) const
    {
        return a * a;
    }
    
    
    int main(int arg, char *argv[])
    {
        cout << getSqureArea(2) << endl;
        return 0;
    }
    编译上面的C++程序,报错如下:
    g++ -c const_volatile_test.cpp -o const_volatile_test.o
    const_volatile_test.cpp:12:28: error: non-member function 'double getSqureArea(int)' cannot have cv-qualifier

    放到静态成员函数声明的尾部

    #include <iostream>
    
    using namespace std;
    
    class CStatic
    {
        private:
        static int static_value;
        public:
        static int get_static_value() const
        {
            return static_value;
        }
    };
    
    int CStatic::static_value = 1;
    int main(int argc,char *argv[])
    {
        cout << CStatic::get_static_value()<<endl;
        return 0;
    }
    编译上面的C++程序,报错如下:
    g++ -c const_volatile_test.cpp -o const_volatile_test.o
    const_volatile_test.cpp:17:39: error: static member function 'static int CStatic::get_static_value()' cannot have cv-qualifier
  • 相关阅读:
    Hibernate的实体类为什么要实现Serializable序列化接口?
    TextBox的SelectionChanged事件及TextBox的Select属性
    wpf的Expander的使用
    使用ScrollViewer实现按钮控制滚动
    popup的使用(一)
    winform中动态生成多行label,同时添加滚动条
    关于CheckListBox触发ItemCheck事件的问题
    protobuf3的学习笔记
    jQuery总结
    青春无悔
  • 原文地址:https://www.cnblogs.com/jiangxinnju/p/5516904.html
Copyright © 2020-2023  润新知