【发布时间】:2015-06-21 08:12:03
【问题描述】:
我有以下课程:
class A {
A(B* b, unsigned int size_in);
private:
unsigned int size;
// Pointer whose address and pointed-to data shouldn't be changed
const char* const p1;
// Pointer which should hold a copy of p1's data (at another location in the memory).
// Shouldn't ever be changed once copied from p1
const char* const p1_copy;
};
我正在尝试了解我应该如何构建构造函数,我想要一些这样的功能:
A::A(B* b, unsigned int size_in) :
size(size_in), p1(b->GetPtr() + b->GetOffset())
{
p1_copy = new char[size];
memcpy(p1_copy, p1, size);
}
但我显然不能对 p1_copy 这样做,因为它是 const 并且只能在初始化列表中进行初始化(memcpy 也不能将 const 指针用作第一个参数)。
仅供参考:构造函数执行后,我永远不会更改p1 或p1_copy。
这样做的正确方法是什么?
谢谢!
【问题讨论】:
标签: c++ pointers constructor constants