赞
踩
今天刷题看到这样一道题 发现对const在函数中的修饰还不懂 就去查了一下资料 下面做一个分享记录
第 5 题(单选题) 题目名称: 假设 AA 是一个类, AA* abc () const 是该类的一个成员函数的原型。 若该函数返回 this 值,当用 x.abc ()调用该成员函数后, x 的值是( ) 题目内容: **A** .可能被改变 **B** .已经被改变 **C** . 受到函数调用的影响 **D** .不变
如果 const 关键字紧跟在函数参数类型后面,那么它表示该参数是常量,即在函数内部不能改变该参数的值。例如,void func(const int param) 中的 param 参数在 func 中是不可变的。
void printArray(const int* arr, int size) { // 这行代码将导致编译错误,因为 arr 是 const 指针 // arr[0] = 100; for(int i = 0; i < size; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; } int main() { int arr[] = {1, 2, 3, 4, 5}; printArray(arr, 5); return 0; }
在上述例子中,printArray 函数的参数 arr 是一个常量指针,指向的元素不能被修改。如果你试图修改 arr 指向的值,编译器会给出错误。
如果 const 关键字紧跟在函数的参数列表之后,那么它表示这个函数是一个常量成员函数,即这个函数不会改变它所属的对象的状态。例如,void MyClass::func() const 表示 func 不会改变 MyClass 的任何数据成员
const 关键字在函数参数列表后面,表示该函数是一个常量成员函数,不能修改它所属的对象的状态。例如:
class MyClass { private: int value; public: MyClass(int val) : value(val) {} int getValue() const { // 这行代码将导致编译错误,因为 this 是指向 const 的指针 // value = 100; return value; } }; int main() { MyClass obj(5); std::cout << obj.getValue() << std::endl; return 0; }
在上述例子中,getValue 是一个常量成员函数,它不能修改它所属的对象的任何数据成员。如果你试图在 getValue 函数中修改 value,编译器会给出错误
如果 const 关键字用在函数返回值类型前,那么它表示函数返回的是一个常量值,不能对这个返回值进行修改。例如,const int func() 返回的是一个常量整数,不能对这个返回值进行赋值操作。
当你在C++中将 const 关键字用于函数返回值类型时,函数返回的就是一个常量,无法修改。下面给出一个例子
class MyClass { private: int value; public: MyClass(int val) : value(val) {} const int getValue() const { return value; } }; int main() { MyClass obj(5); // 下面这行代码将导致编译错误,因为 getValue() 返回的是 const int obj.getValue() = 10; return 0; }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。