C++笔记-const与mutable、static_cast与reinterpret_cast
生活随笔
收集整理的這篇文章主要介紹了
C++笔记-const与mutable、static_cast与reinterpret_cast
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
?
?
const與mutable
static_cast與reinterpret_cast
?
const與mutable
如下代碼:
#include <iostream> using namespace std;class TestObj{public:int x;void func(){x = x + 1;cout << x << endl;} };int main() {TestObj obj;obj.x = 100;obj.func();return 0; }運(yùn)行截圖如下:
如果在func加了const,就會(huì)報(bào)錯(cuò)!
如果非要修改就必須添加mutable關(guān)鍵字!
運(yùn)行不變,源碼如下:
#include <iostream> using namespace std;class TestObj{public:mutable int x;void func() const{x = x + 1;cout << x << endl;} };int main() {TestObj obj;obj.x = 100;obj.func();return 0; }?
?
static_cast與reinterpret_cast
如下面的代碼:
#include <iostream> using namespace std;int main() {void *p = new int[10];int *pInt = (int*)p;delete []pInt;return 0; }這里是C風(fēng)格,老風(fēng)格的東西!
在C++里面有static_cast運(yùn)行截圖如下:
源碼如下:
#include <iostream> using namespace std;int main() {cout << static_cast<int>(3.14) << endl;int *p = static_cast<int*>(malloc(100));free(p);return 0; }下面是reinterpret_casts<>()的用法
如下代碼:
#include <iostream> using namespace std;int main() {int number = 99;char *p = &number;return 0; }這里會(huì)報(bào)錯(cuò)
如果非要轉(zhuǎn)就要使用
reinterpret_casts<>()
#include <iostream> using namespace std;int main() {int number = 99;char *p = reinterpret_cast<char*>(&number);return 0; }用這種方式進(jìn)行。
總結(jié)
以上是生活随笔為你收集整理的C++笔记-const与mutable、static_cast与reinterpret_cast的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C/C++笔记-使用RabbitMQ的C
- 下一篇: Nginx笔记-使用Nginx给vue应