我正在努力解决各种各样的地方之间的差异,你可以把'const'放在c ++的函数声明中.
const开头有什么区别:
const int MyClass::showName(string id){
...
}
Run Code Online (Sandbox Code Playgroud)
最后的const就像:
int MyClass::showName(string id) const{
...
}
Run Code Online (Sandbox Code Playgroud)
另外,在开头和结尾都有这样的结果是什么:
const int MyClass::showName(string id) const{
...
}
Run Code Online (Sandbox Code Playgroud)
Nav*_*een 26
const int MyClass::showName(string id)返回一个const int对象.因此调用代码不能更改返回的int.如果调用代码类似于const int a = m.showName("id"); a = 10;那么它将被标记为编译器错误.但是,如下面的@David Heffernan所述,由于整数是通过复制返回的,因此调用代码没有义务使用const int.它可以很好地声明int为返回类型并对其进行修改.由于对象是通过复制返回的,因此将返回类型声明为没有多大意义const int.
int MyClass::showName(string id) const告诉该方法showName是一个const成员函数.const成员函数是不修改类的任何成员变量的函数(除非它们被标记为mutable).因此,如果您int m_a在类中有成员变量,MyClass并且如果您尝试在m_a = 10;内部执行showName,则会出现编译器错误.
第三是上述两种情况的组合.
Dav*_*nan 11
const连接到返回值适用于返回值.由于复制了返回值,因此它是一个毫无意义的声明,无论是否包含它都没有区别.const参数后列表意味着函数不会修改没有被标记为可变对象的任何状态.这是一个const成员函数,如果你有一个const对象,编译器将不允许你在const对象上调用非const成员函数.这两种用法之间没有相互作用const- 它们是完全独立的结构
不同之处在于const适用于不同的事物。
这表示showName返回一个常int量值——一个不可变的值。当然,由于int是按值返回,const这里的存在没有任何作用。
const int MyClass::showName(string id)
Run Code Online (Sandbox Code Playgroud)
这表示这showName不会修改的可观察状态MyClass(技术上:它不会修改任何未声明的成员mutable),因此您可以在 type 的值上调用它const MyClass。
int MyClass::showName(string id) const
Run Code Online (Sandbox Code Playgroud)
如果您同时使用这两个consts,则上述两个都适用。
| 归档时间: |
|
| 查看次数: |
8767 次 |
| 最近记录: |