বলুন আমার কাছে এমন একটি শ্রেণি রয়েছে যা দেখতে এটি দেখতে (এটি কেবল একটি উদাহরণ):
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