常对象有什么实际用途呢 可以总结一下或者用代码片段进行解释 感谢感谢
一次赋值,永远不变,这种对象有很多好处
比如说可以通过共享相同值的对象,只存储一份,因为对象是只读的,共享不用担心某一个实例修改了什么,造成别的连带影响
这种对象可以构成“常量池”
Java中的字符串就是常量对象,虽然是不同语言,不是C++,但是原理是相同的。
还有就是保持对象的原子状态,比如说地址中的省市区,时间中的时分秒,同时构造,而不是分别构造,杜绝了对象状态无效的情况
设想,用2行代码将河北、保定修改为河南、许昌结果代码只执行了前一行,后一行因为什么原因没有执行,产生了一个河南保定的无效地址。
Number of digit 2 in -21252: 3
结尾无空行
int CountDigit( int number, int digit ){
int t, count=0;
if(number!=0){
if(number<0){
number=-number;
}
while(number!=0){
t=number%10;
if(digit==t){
count++;
}
number/=10;
}
}else{
count=1;
}
return count;
}
常对象在C++中的实际用途包括但不限于以下几个方面:
例如,在结构体中使用const可以防止对结构体内的信息进行修改:
struct Student {
const int id;
const string name;
};
void ChangeInformation(const struct Student* stu) {
// stu->id = 12345; // 错误,无法修改id
// stu->name = "John"; // 错误,无法修改name
// 其他操作...
}
例如:
void foo(const int* ptr) {
// *ptr = 10; // 错误,无法修改指针所指向的对象
ptr++; // 可以改变指针本身的值,指向下一个内存位置
}
void bar(int* const ptr) {
*ptr = 10; // 可以修改指针所指向的对象的值
// ptr++; // 错误,无法改变指针本身的值
}
int main() {
int x = 5;
const int y = 10;
foo(&x);
// foo(&y); // 错误,无法传递常量的地址给非常量指针
int* const ptr = &x;
*ptr = 20; // 可以修改指针所指向的对象的值
// ptr = &y; // 错误,无法改变指针的值
return 0;
}
例如:
class MyClass {
public:
void nonConstFunc() {
// 操作...
}
void constFunc() const {
// 只读操作...
}
};
int main() {
MyClass obj;
const MyClass constObj;
obj.nonConstFunc(); // 可以调用非常成员函数
obj.constFunc(); // 可以调用常成员函数
// constObj.nonConstFunc(); // 错误,常对象不能调用非常成员函数
constObj.constFunc(); // 可以调用常成员函数
return 0;
}
以上是常对象在C++中的一些实际用途和解释,希望能对你有所帮助。如果你有任何其他问题或需要进一步的解释,请随时提问。