有时候会奇怪,为什么老是记不住一些常用的关键词用法,最后才发现是你自己动手不够,没有理解它才会忘记。所以古人说温故而知新,所以我博客里面的所以内容都是一次输入和输出,总得留下一下什么吧。
1、为什么需要const
因为我们希望在程序当中一些关键变量不会被改变,因而这些变量被我们称之为常量,用来提高程序的安全性
2、const 用法
总结 const 用处修饰常量、修饰指针、修饰类成员函数(常量函数)、修饰函数传参数
1、const 修饰常量 记住 int const 和const int 并没有区别
2、const 修饰指针 记忆法 从右边往左边翻译
char *const cp; //到char的const指针
char const *pc1; //到const char的指针
const char *pc2; //到const char的指针(后两个声明是等同的)
从右向左读的记忆方式:
cp is a const pointer to char. 故pc不能指向别的字符串,但可以修改其指向的字符串的内容
pc2 is a pointer to const char. 故*pc2的内容不可以改变,但pc2可以指向别的字符串
3、修饰类成员函数,表示不能修改类中数据成员也不能调用类的成员函数
4、修饰函数传参 意志传递进入的参数不被函数内部所修改,即不允许修改
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
class chang {
public:
chang() = default;
~chang() = default;
///修饰类传数 一般配被 & 意志传递进入的参数不被函数所修改,即不允许修改
inline bool setValue(const int& va) {
m_value = va;
return true;
}
/// 修饰函数,表示不能修改类中数据成员也不能调用类的成员函数
inline int getValue() const {
return m_value;
}
private:
/// 用muteable 修饰以允许该成员可以在常量函数中被修改
mutable int m_value;
};
int main()
{
///修饰常量
int zer = 10;
const int a = 10;
int const b = 100;
std::cout << "a:" << a<< "b:"<<b << std::endl;
///用于指针 常量指针、指针常量,
/// d is a poiter to const int
int const *d = &a;
/// e is a poiter to const int
const int* e = &b;
/// f is const pointer to int
int* const f = &zer;
///用于类
chang c;
c.setValue(a);
std::cout << "c:" << c.getValue() << std::endl;
return 0;
}
一般对于const 的用法也就这些了,由于本人经验有限,如有问题,欢迎修正。