C++
c++ 的学习实践
anuowu
这个作者很懒,什么都没留下…
展开
-
c++ return * this的理解
C++ return * this的理解在c++代码中自定义操作符的时候,例如前置++, = 赋值操作的时候会返回*this。this是类自带的指针,指代的是对象本身。*this对指针解引用,因此使用*this返回的就是一个对象本身。这样的操作可以满足连续的= (赋值操作)。试想一下如果返回的是this,那么返回的是指针。#include <iostream>using namespace std;class Test{public: int m_i; doubl原创 2021-10-31 16:09:36 · 3959 阅读 · 2 评论 -
c++ putchar() 和getchar()
c++ putchar() 和getchar()getchar and putchar 是cstdio 库中的两个字符函数,一个从终端读入字符,一个向终端输出字符。putchar 向终端输出基本形式:输出得到的int对应的字符int putchar(int ch)#include <iostream>// #include <cstdio>#include <cctype>#include <string>using namespace st原创 2021-10-30 17:09:42 · 701 阅读 · 0 评论 -
c++进制转换
c++进制转换十进制到其他进制转化十进制转化成二进制的原理:如果是整数,就把该十进制整数除以2,余数保存,商接下来继续除以2,直到商为0;再从后到前保存下余数得到就是该数的二进制数。其他进制转化原理类似;// 十进制到二进制/八进制的转化string decToOther(int a, int bit){ string b; stack<int> st; while (a != 0) { int left = a % bit;原创 2021-10-15 09:25:17 · 101 阅读 · 0 评论 -
c++ extern 变量
c++ extern关键字extern 变量extern 置于变量或者函数前面,声明了该变量,但是变量或函数定义在别处。如果在多个文件中使用同一个变量,必须将声明和定义分离。此是变量的定义只能出现在一个文件中,而其他用到该变量的文件需要声明。注意不能对变量进行初始化或者对函数进行定义, 否则表明这是一个定义而不是声明.int a; //这是定义int a = 1; //这也是定义extern int a; //这是声明extern int a = 1;//这是定义,extern没用了。原创 2021-10-14 21:01:00 · 764 阅读 · 0 评论 -
关于c++ 条件编译 _OPENMP
关于c++ 条件编译 _OPENMP_OPENMP是编译器预定义的。一般在程序中用来作为条件编译的条件,来判断是否使编译openmp的程序。#ifdef _OPENMP // openmp 需要的部分;#ENDIF这里给一个简单的例子#include <cstdio>int main(){ #ifdef _OPENMP printf("compiled by an OPENMP compliant implementation\n"); #endif原创 2021-10-11 23:35:56 · 587 阅读 · 0 评论 -
c++ 智能指针
c++ 智能指针c++的动态内存很容易出现问题(忘记释放内存导致内存泄漏;释放还有指针引用的内存导致空悬指针)。为了避免这些问题的出现引入 智能指针 。智能指针类似于普通的指针但是会在合适的时候自己释放内存。智能指针有:shared_ptr<T>;unique_ptr<T>;weak_ptr<T>;shared_ptr类创建#include<memory>#include<vector>#include<string&原创 2021-03-28 21:08:39 · 55 阅读 · 0 评论 -
c++ NULL 与 nullptr
c++ nullptr 与 NULLnullptr是C++11版本中新加入的, 它的出现是为了解决NULL表示空指针在C++中具有二义性的问题.NULLNULL 在 c 中表示的是空指针;在c++中NULL实际上表示的是0int * pi = NULL;nullptr在c++中NULL实际上表示的是0。因为C++中不能把void*类型的指针隐式转换成其他类型的指针,所以为了结果空指针的表示问题,C++11加入了nullptr,可以保证在任何情况下都代表空指针。建议以后还是都用nullptr替代原创 2020-11-09 11:48:06 · 290 阅读 · 0 评论 -
c++string
stringstring 的修改方法描述插入str.insert(pos, n,c)在pos之前插入n个字符cstr.insert(pos, s2)在pos之前插入 s2str.insert(pos, s2, pos2, len)在pos之前插入s2从下标pos2开始的len个字符str.insert(pos, cp, len)在pos之前插入cp所指数组的前len个字符删除str.erase(pos, len)删除从下标po开始的原创 2020-11-09 11:30:00 · 65 阅读 · 0 评论 -
C++数组
C++数组int a[5]{1,2,3,4,5};for (auto i : a){ cout << i << ' ';}int *p = new int[5] {1,2,3,4,5} //malloc 分配在堆上int*p2(new int[5] {1,2,3,4,5})for(int i=0; i<5;i++) cout << p2[i] << endl;c++ 风格的数组array<int, 10>myint1 {1原创 2020-11-09 11:28:54 · 89 阅读 · 0 评论