C++中的const
在C++中,const是一个关键字,用于指定一个变量或对象的值将不会被修改。 const可以用于不同的变量类型,例如整数,浮点数,字符,指针等。在这个文档中,我们将探讨const的一些用途。
常量
使用const定义常量是C++中的一种最常见的用途。 在定义变量时,将变量定义为const将确保在程序的其余部分中不会更改变量的值。 这对于程序的可维护性和易读性非常重要。
以下是一个使用const定义常量的示例:
const int MAX_VALUE = 100;
在上面的示例中,我们定义了一个名为MAX_VALUE的常量,并将其值设置为100。 在程序的其余部分中,当我们使用MAX_VALUE时,我们知道它的值将始终为100。
函数参数
在函数定义中,const可以用于指定参数是只读的。 这可以确保在函数内部不会更改参数的值。 这对于编写安全和可靠的代码非常重要。
以下是一个使用const在函数参数中指定只读的示例:
int sum(const int x, const int y)
{
return x + y;
}
在上面的示例中,我们定义了一个名为sum的函数,它接受两个const整数参数,这意味着函数内部不会更改这些参数的值。
成员函数
在C++中,const也可以用于类的成员函数。 const成员函数保证不会修改类的数据成员,因此它们可以安全地由const对象调用。
以下是一个使用const在类的成员函数中指定只读的示例:
class MyClass
{
public:
int getValue() const
{
return value;
}
private:
int value = 10;
};
int main()
{
const MyClass obj;
std::cout << obj.getValue() << std::endl;
return 0;
}
在上面的示例中,我们定义了一个名为MyClass的类,它具有一个const成员函数getValue(),该函数返回类的值成员。 在main()函数中,我们创建了一个const对象obj,并调用了getValue()函数,因为该函数是const成员函数,因此可以安全地由const对象调用。
总结
在C++中,const是一种非常有用的关键字,用于定义常量,指定函数参数为只读以及定义类的const成员函数。 这对于编写安全和可维护的代码非常重要。
const 和static的区别
const和static是C++中两个非常常见的关键字,它们的用途有些相似,但也有很多不同之处。 const用于指定变量值不会被修改,而static用于指定变量在整个程序生命周期内只有一个实例。
其中,const和static还有一个重要的区别:const变量可以在编译时初始化,而static变量必须在程序运行时初始化。这意味着const变量的值不能在程序运行时更改,而static变量的值可以在程序运行时更改。
另一个重要的区别是,const变量在程序的整个生命周期内都是只读的,而static变量可以在程序的任何地方进行读写操作。因此,const变量是更加安全和可靠的,而static变量则更加灵活和易于使用。
const int *和 int const * 和 int * const
const int *和int const *是等效的,指针指向常量,它们都表示指向常量整数的指针,这意味着指向的内容不能更改。 (const 在 * 前)
int * const表示一个指针是常量,该指针不能修改,但是可以更改指针指向的内容。(const 在 * 后)
int * const a 代表这个指针 const了 不能改 int const *b 代表这个指针指的内容不能动了
注意,const关键字可以位于*的左侧或右侧,含义不同
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
int * const a = new int(1);
*a=1;
//a=new int(2); error
std::cout << *a << std::endl;
int const * b = new int(2);
const int * c = new int(3);
// *b=2; error
// *c=3; error
b=new int(4);
c=new int(5);
std::cout << *b << std::endl;
std::cout << *c << std::endl;
return 0;
}
const int * const a表示一个指针是常量,指向的内容也是常量,指针和指向的内容都不能修改。
const int * const GetX() const
const int *和int const *是等效的,都表示指向常量整数的指针。
int * const表示指针是常量,指针指向的内容可以改变。
在函数返回值类型前面的const表示函数返回值是常量,不能被修改。
在C++中,const也可以用于类的成员函数。 const成员函数保证不会修改类的数据成员,因此它们可以安全地由const对象调用。
以下是一个使用const在类的成员函数中指定只读的示例:
class MyClass
{
public:
int getValue() const
{
return value;
}
private:
int value = 10;
};
int main()
{
const MyClass obj;
std::cout << obj.getValue() << std::endl;
return 0;
}
在上面的示例中,我们定义了一个名为MyClass的类,它具有一个const成员函数getValue(),该函数返回类的值成员。 在main()函数中,我们创建了一个const对象obj,并调用了getValue()函数,因为该函数是const成员函数,因此可以安全地由const对象调用。
const int *和int const *是等效的,都表示指向常量整数的指针。int * const表示指针是常量,指针指向的内容可以改变。const int * const表示指针是常量,指向的内容也是常量,指针和指向的内容都不能修改。