C++ const关键字
1、explicit
不使用explicit声明时,C++编译器允许隐式的转换。即:在C++中, 如果的构造函数只有一个参数时, 那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象.
如:
class mystring
{
public:
mystring(int size);
}
在此情况下 mystring string1=10; 语句合法。C++将10转换为参数为10的mystring对象,然后赋值给string1。
若要禁止此种隐式转换,应用explicit关键字声明一个参数的构造函数。
参考:https://blog.csdn.net/guoyunfei123/article/details/89003369
2、const关键字
普通对象:
const int a=10; 或 int const a=10; 等效
a-指向的变量 为const
const int* a; 表示a指向的变量为const int ,即a指向的变量不能改变,(*a)++ 错误
b-指向不变
int s=9;
int* const b=&s; 表示b 是const 常量,其值不能改变,且b是指针,即b的指向不能变,指向的值可变。(*b)++ 合法。
c-用于函数的形参:
void fun(const int * p) //即形参为指向const int 的指针。函数内部不要去改变 *p的值 。
d-对象与类中的应用
1、const 成员必须用初始化列表初始化,因为为const类型,函数内部是不能改变他的值。
2、成员函数 myclass::myprint() const{} 。即此函数为访问函数,不能修改类成员。
浙公网安备 33010602011771号