
C++基础
「已注销」
这个作者很懒,什么都没留下…
展开
-
C++向函数传入未知个数的参数,怎么办(非水)
学过python的人应该都知道,这个对于python来说很好实现而且传入未知个数的参数也是比较常见的比如爬虫里面经常出现这个情况但是c++呢???需要用到initializer_list我没拼错哦。。。。。。。之后类似的单词也比较常见,基本都这个长度。。。。。。。。。。。。正文:举个例子,我们要编写一个处理错误信息的函数,目的是能够整齐划一地处理所有错误因为C++有许多类型的错误,所以在调用错误输出函数时传递的参数也不相同为了能编写出可以处理不同实参的函数,早原创 2022-01-15 14:32:29 · 1484 阅读 · 0 评论 -
C++中怎么给类的成员赋初始值
直接赋值就好了只是有的书没写原创 2022-01-14 14:03:12 · 600 阅读 · 0 评论 -
Java与C++的this指针与static
C++的static和Java的static的区别_DanStevensBigFan-优快云博客static的作用与用法_realzuile的博客-优快云博客_static的作用和用法this几乎没有区别哦C++中this指针的作用以及用法详解_深海一诺-优快云博客_this指针的作用this指针的使用(1)在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;(2)当参数与函数成员变量名相同时,应使用 this.age = age;表面上看thi原创 2022-01-14 13:44:21 · 222 阅读 · 0 评论 -
C++对象成员的访问(用指针)
#include <iostream>#include "student.h"using namespace std;int main(){ student* p; // student* p(10,20,"30","40");不能这样用构造方法 p->nnn = 6;//和用普通方法表示一样,指针也不能直接访问私有属性 //运行看结果,没有调用析构函数,那么构造函数呢,我搜了些信息,结论是没调用构造函数 return 0.原创 2022-01-14 13:02:51 · 237 阅读 · 0 评论 -
C++的修饰符类中的const,mutable
const的作用:令类的对象或类的属性不会被修改当把一个类声明为const时,那么它的所有的成员属性,都自动成为const型但是所有的成员属性都时const会不会太过绝对了,万一里面有我想要修改的呢,如果有一个类,我有99个不想被修改的属性,一个可以修改的属性,难道我要给这99个加上const??当然不用啦,有mutableconst的用法在类里面不能class const student这样用而是在其他地方用,比如const student stu;先放头文件#inc原创 2022-01-14 12:47:43 · 116 阅读 · 0 评论 -
C++的static和Java的static的区别
不同的是 JAVA对 static 修饰的函数可以不创建对象,直接用类名调用,如:public class Main { public static void main(String[] args) { Test.print(); //here }}class Test{ public static void print() { System.out.print("hello"); }}...原创 2022-01-14 11:03:27 · 418 阅读 · 0 评论 -
C++的友元函数,友元类及#pragma once的作用
把代码都放最后吧友元函数的作用:可以访问该类的私有属性但在类的外面定义的时候没有”类::“所以该友元函数不属于该类友元函数的意义:C++友元函数_Bussy的博客-优快云博客_c++友元函数 csdn1、友元存在的意义为什么要有友元函数?友元的存在可以共享数据资源,减小系统的调用开销,提升运行效率。funA想访问B类中的私有成员函数,只需要在B类的声明中加个friend returntype funA(T t);即可。其中friend是友元函数的标识,告诉编译器这是友元函数,原创 2022-01-14 10:55:31 · 196 阅读 · 0 评论 -
C++静态成员
静态成员使用static修饰的成员,可以修饰属性,函数被static所修饰的成员可以被类任何的对象使用且共享先看一下怎么用static修饰成员值得注意的是,被static修饰的成员要先初始化一下,否则会报错哦#include <iostream>using namespace std;class teach{ private: static int counter; int id; public: te原创 2022-01-13 19:42:57 · 109 阅读 · 0 评论 -
C++访问类的对象的属性
只能用函数来访问,不能用对象.属性名取赋值和访问原创 2022-01-13 17:04:47 · 509 阅读 · 0 评论 -
C++初始化类的对象错误,表达式必须具有类类型,但它具有类型 “类名(*)()“
如果时创建类的对象的时候,调用了一个无参构造,那么这时候的括号(主函数的创建类的对象的括号)就不要写啦原创 2022-01-13 17:01:25 · 11680 阅读 · 0 评论 -
C++创建类的对象失败warning: ISO C++ forbids converting a string constant to ‘char*‘
如果你直接在构造函数的括号里写字符串那么编译器会认为你传了一个string,不是char*解决方法转换类型(char*)这是头文件的里面的构造函数的函数头student::student(int mid,int mage,char* mname,char* mheight)#include <iostream>#include "student.h"using namespace std;int main(){ student stu(10,20,(ch原创 2022-01-13 16:57:12 · 987 阅读 · 0 评论 -
C++类析构函数什么时候调用
脱离其作用范围,或者释放一个指向类对象的指针比如现在有一串代码一种情况可以复制到编译器,看一下里面的show函数,这个show函数不是析构函数,但传入了一个类的对象,当一个函数调用结束时,释放形参的内存,这个新参正好是类的对象,那么它的作用域就在这个函数之中,当函数调用结束时,自动执行析构函数比如我现在删了主函数的show,那么333333333(作为一个标记)上面就没有执行了析构函数这句话,同理,主函数也是一个函数,只是在主函数里面创建的类的对象不是作为实参传入罢了,这个类的对象的作用原创 2022-01-13 16:25:27 · 740 阅读 · 0 评论 -
构造函数、析构函数频繁调用为什么不内联
什么时候用内联:短小而且反复调用的函数进行内联就可以了。构造函数、析构函数频繁调用而且代码也几乎没写什么,为什么不内联呢?是的,从代码上看,确实代码量很小,几乎没有先来看构造函数和析构函数,参阅Effective C++得知,将构造函数和析构函数声明为inline是没有什么意义的,即编译器并不真正对声明为inline的构造和析构函数内联,因为编译器会在构造和析构函数中添加额外的操作(申请/释放内存,构造/析构对象等),致使构造函数/析构函数并不像看上去的那么精简。注意:有额外操作原创 2022-01-13 15:51:18 · 166 阅读 · 0 评论 -
C++文件读取
我先分享几个我自认为很高质量的文章的链接c++文件读写操作C++文件读写详解(ofstream,ifstream,fstream)原创 2022-01-09 17:40:01 · 143 阅读 · 0 评论 -
C++的文件操作open与close
先看一下相应的打开文件的不同参数的作用C++ open 打开文件(含打开模式一览表)打开模式可以用多个,但符号是|,不是&,注意啦比如ios::in | ios::binary表示用二进制模式,以读取的方式打开文件。 ios::out | ios::binary表示用二进制模式,以写入的方式打开文件。void open(const char* szFileName, int mode)第一个参数是指向文件名的指针,第二个参数是文件的打开模式标记。有的书可能书的出版时间比较原创 2022-01-09 14:42:30 · 2825 阅读 · 0 评论 -
C++的typedef之——将函数作为参数——的运用
这是接上一篇文章写的C++函数——将函数作为参数传入函数(将函数作为的参数删了就不行的一篇文章)(非水文)观察一下函数这样写是不是有点复杂void num(int a,int b,int(* p)(int,int))int(* p)(int,int)这里是不是挺复杂的,也不好看对吧那么这时候typedef的作用就又出来啦#include <iostream>using namespace std;typedef int(* Ptr)(int,int);//这样用原创 2022-01-07 15:13:49 · 422 阅读 · 0 评论 -
C++函数——将函数作为参数传入函数(将函数作为的参数删了就不行的一篇文章)(非水文)
将函数作为参数,可以少写代码,提高复用率大家可以这样想,我要实现一个函数的作用可以加两个数字,也可以减两个数字,那么这个时候可以在这样(先不将函数作为参数)你们会这样吗?int math(int a,int b,char ch){ switch (ch) { case '+': return a+b; break; case '-': return a-b; break; }}好原创 2022-01-07 14:49:06 · 711 阅读 · 0 评论 -
C++函数指针
这块的内容一定要写明白什么是返回值才好理解先看一下指向函数的指针的定义格式(格式就长成这样,要去领悟一下。。。)#include <iostream>using namespace std;int abc(int& a){ return a*a;}int main(){ int n = 5; // //方法一 // //指向函数的指针 // int(* p)(int&); // //注意* 和 p 要用括号原创 2022-01-07 11:50:03 · 181 阅读 · 0 评论 -
C++常量指针常量,常量引用常量,指针常量,引用常量,常量指针,常量引用
#include <iostream>using namespace std;int main(){ int n = 6; //常量指针常量 const int* const p = &n; // p = NULL;//报错 // *p = 5;//报错 //常量引用常量 const double &c = n; //c = 5;//报错 //指针常量 int* const p2 =.原创 2022-01-06 17:30:31 · 76 阅读 · 0 评论 -
C++智能指针
先来看一下不用智能指针的结果这个图片来自C++ 智能指针--内存泄露的惨痛经历我的理解是有一个函数有创建指针的作用,比如里面有malloc,new之类的,但是没有free和delete,那么函数每调用一次,就会占一些内存,这样不好,就会上面这样,运行内存的空间几乎被占满了下面是内存泄漏的一些例子c语言内存泄露示例...原创 2022-01-06 16:27:42 · 67 阅读 · 0 评论 -
C++的指针的命名规范
1)用(p或ptr)加上(英文单词(单词首字母大写))来表示一个指针2)用(p或ptr)加上(英文单词(单词小写))来表示一个指针【不推荐】3)用(p或ptr)加上 ' _ '再加上(英文单词(单词首字母大写))来表示一个指针...原创 2022-01-02 22:01:27 · 2044 阅读 · 0 评论 -
C++的标准库的函数,begin,end
//int arr[] = {0,1,2,3,4};//int* b = begin(arr);//获取数组的首地址//int* e = end(arr);//获取数组的最后一个元素的下一位的地址#include <iostream>using namespace std;int main(){ int arr[] = {0,1,2,3,4,5,6}; cout<<"arr = "<<arr<<endl; cout&.原创 2022-01-02 21:42:43 · 355 阅读 · 0 评论 -
C++空指针
void型指针是无类型指针,不是空指针哦野指针是指针没有只想特定的内存单元空悬指针是指针只想的内存已经被释放,可能只想任何地方,也可能指向原单元空指针是指针什么都不指空指针的值有NULL或0;nullptr是空指针,可以转换为一种特殊类型的字面值#include <iostream>//#defineusing namespace std;int abc(char* arr){ cout<<"44444444444444444444原创 2022-01-02 21:02:07 · 425 阅读 · 0 评论 -
C++的引用与指针(2)
~~指针可以在任何时候初始化引用在声明时候就初始化我都试了。引用不初始化也可以用,用的是默认值(可能是书比较老)~~~引用不能为空NULL,必须总是引用一个对象 指针可以为空,不知想任何地方还有一点我看不懂(我上图了)...原创 2022-01-02 17:07:18 · 249 阅读 · 0 评论 -
C++引用与指针的区别
1)引用只是变量的别名,不开辟新的空间,与原变量使用的是同一块内存单元指针是新的变量,有自己的存储空间仔细看地址一位一位的比较哦VVVV下面是用指针哦#include <iostream>using namespace std;void abc(int* p){ cout<<"=================="<<endl; cout<<"p = "<<p<<endl; cout原创 2022-01-02 16:43:58 · 209 阅读 · 0 评论 -
C++的new与malloc
new的使用方法发现new即使只是申请3个元素的所需的内存空间但还是可以给第4个元素赋值,而且输出不会报错但这样其实有风险,可能会把其他的元素的数值给改了#include <iostream>using namespace std; int main(){ int* p; p = (int*)malloc(sizeof(int)*3); p[0] = 0; p[1] ..原创 2022-01-02 12:56:04 · 245 阅读 · 0 评论 -
C++11的for的新规范
和python的for有点像原创 2021-12-31 22:30:34 · 77 阅读 · 0 评论 -
C++的运算符重载
运算符重载别人写的,挺好原创 2021-12-31 22:23:58 · 73 阅读 · 0 评论 -
C++的强制类型转化操作符
原创 2021-12-31 22:12:31 · 239 阅读 · 0 评论 -
C++的运算符优先级
原创 2021-12-31 22:01:19 · 75 阅读 · 0 评论 -
C++的其他运算符
原创 2021-12-31 21:58:27 · 71 阅读 · 0 评论 -
C/C++的sizeof的注意点
原创 2021-12-31 21:57:33 · 78 阅读 · 0 评论 -
C++用const还是#define
图片我不知道怎么回事放不正这是书上写的,以后我再看看,先存着,书要还,哈哈原创 2021-12-31 21:02:08 · 76 阅读 · 0 评论 -
C++的命名规范
C++的命名规则(这是别人写哒)棒棒哒~原创 2021-12-31 20:54:49 · 165 阅读 · 0 评论 -
C++的decltype推导类型
在decltype的参数是一个变量或者常量时使用decltype必须赋值,否则报错#include <iostream>using namespace std;int main(){ const int c = 0; decltype(c) m = 66.66; cout<<m<<endl; return 0;}使用decltype必须赋值,否则报错特殊情况当在decltype的参数是一个表达式(计算.原创 2021-12-31 20:32:29 · 171 阅读 · 0 评论 -
C++中的typedef与using
我想要将int的类型名称等效替换为iiint那么typedef用法为typedef int iiint;注意要加上分号using的用法为using iiint = int ;【注意】被改写的名称放在等号右侧typedef定义指针类类型比较方便using我不会(我查了资料,没查到。。。。。。。。。。)...原创 2021-12-30 22:09:56 · 474 阅读 · 0 评论 -
C++数字常量
如果一个小数没有做任何说明,则默认为双精度型数据若要表示浮点数据,要在该数据常量之后加上F(也可以f)(大小写无关)如果要表示长双精度型数据,则要加上L(也可以小写)非0即真,false是0,true是1#include <iostream>using namespace std;int main(){ if(true) { cout<<"true = "<<true<<endl; co原创 2021-12-30 21:12:27 · 175 阅读 · 0 评论 -
C++变量初始化
变量初始化就是给变量赋一个初始值对于全局变量,静态变量,外部变量,系统会帮我们初始化成0、NULLC++11中有一个新的初始化方式,成为初始化列表常见的有初始化结构体类型原创 2021-12-29 14:54:58 · 290 阅读 · 0 评论 -
C++储存类型,动态内存分配
系统为变量分配内存的方式决定了变量的作用域和生存期C++有静态分配、自动分配、动态分配静态分配:在编译时就分配了内存,程序结束时,变量释放栈:在运行程序后,系统将为程序开辟一块成为栈的活动存储区,按照先进后出的方式使用存储空间自动分配:在栈中为变量临时分配的内存空间,在程序运行后,在变量作用域开始时,由系统自动为变量分配内存,在作用域结束后释放内存动态分配:利用“堆”的内存块为变量分配内存空间,堆使用静态存储区和栈之外的部分内存动态分配完全由程序控制内存使用的分配方式new运原创 2021-12-29 14:44:10 · 250 阅读 · 0 评论 -
C++作用域限定符
如果局部变量和全局变量同名,那么在局部作用域内只有局部变量才有作用#include <iostream>using namespace std;int a = 666;int main(){ int a = 888;//与全局变量int a = 666同名 cout<<"局部变量a = "<<a<<endl; cout<<"全局变量a = "<<::a<<endl; retu原创 2021-12-29 14:10:03 · 328 阅读 · 0 评论