小说网站开发数据库,做实验用哪些国外网站,临沂建设职业中专学校,wordpress用户如何删除文章文章目录 一、const的四大作用1.修饰 变量、数组2.修饰 函数的形参、修饰 引用 (最常用#xff09;3.修饰 指针#xff1a;常量指针、指针常量 、只读指针4.修饰 类的成员函数、修饰 类的对象 一、const的四大作用
1.修饰 变量、数组
1.const修饰变量#xff1a; 被const修… 文章目录 一、const的四大作用1.修饰 变量、数组2.修饰 函数的形参、修饰 引用 (最常用3.修饰 指针常量指针、指针常量 、只读指针4.修饰 类的成员函数、修饰 类的对象 一、const的四大作用
1.修饰 变量、数组
1.const修饰变量 被const修饰的变量成为只读常量防止误修改。 const修饰变量该变量的值在初始化后就不会再被改变。若强行修改则编译器会报错。
const int N 1001; //算法题常用const int a 10;
const float b 3.14;
const char c A;a 11; //报错
b 3.15; //报错
c B; //报错2.const修饰数组 const修饰数组则数组中元素的值在初始化后不可被修改。
const int a[] {1,2,3};
//a[0] 10; //错误2.修饰 函数的形参、修饰 引用 (最常用
1.const修饰 函数的形参 可以避免传递过来的值在函数体内部被误修改。
void printString(const char* str){ //等价于const char str[]cout String: str endl;
}2.const 修饰 引用 (最常用) 引用避免了拷贝、const避免了函数对值的修改。 明确告诉函数的使用者该参数在经过函数调用时不会被修改提高了代码的清晰度和安全性。
void setName(string name){ //应优化为 const string namem_name name;
}void printName(const string name) {cout Name: name endl;// name Sam; // 错误不能修改const引用指向的值
}3.修饰 指针常量指针、指针常量 、只读指针
1.常量指针 const 先碰到 *表示 变量的值不可修改 const int * ptr 指针的指向可以改变指针指向的值不可修改。指针只能指向常量。
int a 1, b 1;
const int * ptr1 a;
ptr1 b; //指针的指向可以修改
//*p1 10; //错误:常量指针,指针指向的值不可修改2.指针常量 const 先碰到指针表示 指针不可修改 int * const ptr 指针是个常量指针的指向不可修改但是指向的变量的值可以改变
int a 1, b 1;
int * const ptr2 a;
//ptr2 b; //错误:指针常量,指针指向不可修改
*ptr2 10;3.只读指针 两个const表示 变量的值和指针都不可修改 const int * const ptr
int a 1, b 1;
const int * const ptr3 a;
//ptr3 b; //错误:只读指针,指针的指向不可改变
//*p3 10; //错误:只读指针,指针指向的值不可修改4.修饰 类的成员函数、修饰 类的对象
1.const 修饰 类的成员函数 常成员函数 不会修改任何成员变量。 成员函数后面加const则该成员函数不可修改类的成员变量。除非成员变量前面加了关键字mutable
void test(int x) const;#include iostreamclass Test {
public:int x;mutable int y; // 可以在const成员函数中被修改Test(int val):x(val),y(0){//使用初始化列表,直接对成员变量初始化} void modify() const { // const成员函数// x; // 错误不能在const成员函数中修改非mutable成员y; // 正确可以修改mutable成员}
};int main() {Test t(10);t.modify();std::cout t.y t.y std::endl; // 输出 t.y 1return 0;
}2.const 修饰 类的对象 常对象 只能调用 常成员函数 被const修饰的对象只能调用类中 结尾带const的成员函数。
const People p;