相关疑难解决方法(0)

'const'在类的函数声明中的含义是什么?

const这些声明中的含义是什么?该const混淆了我.

class foobar
{
  public:
     operator int () const;
     const char* foo() const;
};
Run Code Online (Sandbox Code Playgroud)

c++ const declaration c++-faq

689
推荐指数
9
解决办法
25万
查看次数

逻辑和物理常数之间的差异

这两个术语有什么区别,为什么我需要mutable

c++

24
推荐指数
3
解决办法
7143
查看次数

如果成员函数影响逻辑状态,而不是按位状态,那么它们应该是"const"吗?

我正在编写一个包含控制硬件设备的传统C API的类.在一个简化的例子中,我可能有类似的东西:

class device
{
public:
    void set_request(int data) { legacy_set_req(p_device, data); }
    int get_response() const   { return legacy_get_rsp(p_device); }
private:
    device_handle_t *const p_device;
};
Run Code Online (Sandbox Code Playgroud)

这个类本身没有按位状态; 因此,我可以选择声明set_request()const,编译器会对此感到满意.但是,从语义的角度来看,这是否是正确的方法,因为它会影响对象的可观察行为?(即,包封的硬件设备非常确实有状态).

c++ const

8
推荐指数
2
解决办法
457
查看次数

为什么我可以在C++ 11中使用const函数修改类?

我是CPP的新手,我不知道为什么setValue() const同时它是一个const.

为什么该类允许修改 const public

看起来很奇怪,g ++ -Wall或MS Visual C++没有错误

这是我的代码:

main.cpp中

#include <iostream>
#include <cassert>
#include "DArray.h"

int main(void)
{
    DArray darray(1);
    darray.setValue(0, 42);
    assert(darray.getValue(0) == 42);
    darray.~DArray();
    system("pause");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

DArray.h

class DArray
{
private:
    int* tab;

public:
    DArray();
    DArray(unsigned int n);
    ~DArray();

    int& getValue(unsigned int n) const;
    void setValue(unsigned int n, int value) const;
};
Run Code Online (Sandbox Code Playgroud)

DArray.cpp

#include "DArray.h"

DArray::DArray()
{

}

DArray::DArray(unsigned int n)
{
    tab = new int[n];
}

DArray::~DArray()
{
    delete[] tab; …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

7
推荐指数
2
解决办法
476
查看次数

标签 统计

c++ ×4

const ×2

c++-faq ×1

c++11 ×1

declaration ×1