বলুন আমার কাছে এমন একটি শ্রেণি রয়েছে যা দেখতে এটি দেখতে (এটি কেবল একটি উদাহরণ):
class A {
double *ptr;
public:
A() : ptr( new double[100] ) {}
A( const A &other ) {
other.ptr[7] = 15;
}
void doNotChangeMyData() const {
ptr[43] = 14;
}
void changeMyData() {
ptr[43] = 14;
}
~A() { delete[] ptr; }
};
constউভয় কপি কন্সট্রাকটর এবং doNotChangeMyDataফাংশন করতে যাতে ptrপরিবর্তন করা যাবে না; তবে, এই এখনও অ্যারের দ্বারা প্রতি ইঙ্গিত সামগ্রীগুলিকে সংশোধন করার আমাকে দেয় ptr।
কেবলমাত্র "সতর্কতা অবলম্বন করা" (বা কাঁচা পয়েন্টার থেকে দূরে ptrপরিবর্তিত হওয়া) এর constউদাহরণস্বরূপ এর অ্যারের সামগ্রীগুলি পরিবর্তন হতে বাধা দেওয়ার কি উপায় আছে ?
আমি জানি আমি এরকম কিছু করতে পারি
void doNotChangeMyData() const {
const double *const ptr = this->ptr;
ptr[43] = 14; // then this would fail to compile
}
তবে আমি না ...
std::vector::operator[]()সঠিকভাবে মান পরিবর্তন করতে পারেন?
vectorহবে।
std::vector::operator[]() constএকটি constরেফারেন্স দেয়
std::vector