कहो कि मेरे पास एक वर्ग है जो इस तरह दिखता है (यह सिर्फ एक उदाहरण है):
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