常量类和函数
Constant class and function
我需要写一个新方法。给出了以下代码:
const Class * func() const;
但是,当类和函数都被声明为常量时,这意味着什么?
const Class * func() const;
const Class*
是返回类型。它说这个函数返回一个指向const Class
的指针。因此,无论谁调用这个函数,都会收到一个指针,但他们不能修改指针指向的对象
声明末尾的const
表示,该成员函数不会修改被调用对象的状态。也就是说,它不会修改this
指向的对象。事实上,如果您试图修改func
中的任何数据成员(不是mutable
(,编译器会通知您。
const Class * func() const;
^^^^^ ^^^^^
1 2
第一个
const
表示返回类型为const Class*
。第二个意味着,方法
func
不会更改其类成员。
根据段落§9.4/1
:
struct X {
void g() const;
};
如果成员函数被声明为
const
,则this
的类型为const X*
因此,您不能修改X
的成员。
const Class * ...
这意味着func
将向Class
返回一个const pointer
Class c;
Class* p = c.func() // Not allowed.
const Class* p = c.func() // OK.
p->mem = 2; // Not allowed. p is a const pointer.
----------------------------------------------------------------------------------------------
func() const;
^^^^
意味着func
不会修改this
,或者换句话说,不会影响类的状态(不会修改任何成员变量。(。
void Class::func(int& i) const {
this->mem = i; // is not allowed here since func() is const (unless 'mem' is mutable)
i = this->mem; // This is OK.
}
这意味着没有任何变化!const表示事物是不变的
即
const Class
-无法享受的乐趣
func() const;
那个对象不能自己玩
相关文章:
- 有没有什么方法可以使用一个函数中定义的常量变量,也可以由c++中同一程序中的其他函数使用
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- constexpr构造函数需要常量成员函数时出现问题
- std::函数常量正确性未遵循
- 具有常量引用参数的函数模板专用化
- constexpr 函数获取常量字符*
- 在定义的函数中使用常量时出错
- Clang 格式 10.0 与 5.0 常量成员函数的格式不同
- C++ 获取函数在常量引用中按值返回的结果
- 函数签名与调用的函数不匹配,常量字符[]和字符*之间的区别?
- 为什么下面带有非常量转换函数的代码没有歧义?
- 与 map 一起使用时复制构造函数常量错误
- 静态函数常量静态成员函数
- 如何在指向常量地址时声明成员函数常量指针
- C++getter函数:常量和非常量
- C++循环中调用伪随机数生成器函数 - 常量种子问题
- 提升::任何构造函数 - 常量类型重载分辨率
- 函数常量返回类型:类型引用的初始化无效
- C++模板通过指针的函数/常量指针的函数进行的部分专用化没有什么不同
- 虚函数常量与虚函数非常量