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{} 。即此函数为访问函数,不能修改类成员。

 

posted @ 2020-03-07 11:38  *Hu*  阅读(111)  评论(0)    收藏  举报