
C++
C++
「已注销」
柔水终成雕刀
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++11新功能
新类型:C++11新增了long long和unsigned long long以支持64位的整形;统一的初始化C++11扩大了用大括号括起的列表(初始化列表)的适用范围,使其可用于所有内置类型和用户定义的类型(即类对象)。使用初始化列表时,可添加等号,也可以不添加:int x={5};double y{2.75}short quar[5] {4,5,2,76,1}初始化列表也可用于new表达式中:int * ar=new int[4]{2,4,6,7};创建对象时,也可使用大括号(而原创 2021-11-05 16:32:30 · 104 阅读 · 0 评论 -
C++ 友元
友元:在C++中友元分为三种:友元函数;友元类;友元成员函数;通过让函数称为类的友元,可以赋予该函数与类相同的访问权限。创建友元:创建友元函数的第一步,是将函数原型放在类声明中,并在原型声明前加上关键字friend....原创 2021-07-14 10:48:53 · 94 阅读 · 0 评论 -
C++ 运算符重载的使用
运算符重载:在C++中要使用运算符重载,需要使用被称为运算符重载的特殊函数形式。运算符重载的函数的格式如下:operatorop(argument-list);例如 operator+()重载的是+运算符,operator*()重载的是*运算符。被重载的运算符符号,必须是C++中的运算符,不能重载虚构出来的运算符符号。以时间相加的函数为例:1:常规的加法运算符操作:头文件:#pragma onceclass Time{private: int hours; int minutes;原创 2021-07-14 10:23:56 · 152 阅读 · 0 评论 -
C++ 对象数组
对象数组:在C++中要创建同一个类的多个对象,可以创建独立对象变量,也可以创建对象数组。创建对象数组的方法和声明标准类型数组相同:Stock mystuff[4];可以用构造函数来初始化数组元素。在这种情况下,必须为每个元素调用构造函数:const int STKS =4;Stock stocks[STKS]={Stock(“Name1”,12.5,20),Stock(“Name2”,12.5,20),Stock(“Name3”,12.5,20),Stock(“Name4”,12.5,2原创 2021-07-10 13:14:14 · 184 阅读 · 0 评论 -
C++ 的this指针
this指针:在C++中this指针用来调用成员函数的对象(this被作为隐藏参数传递给方法),一般来说,所有类方法都将this指针设置为调用它的对象的地址。在C++的类中每个成员函数(包括构造函数和析构函数)都有一个this指针,this指针指向调用对象,如果方法需要引用整个调用对象,则可以使用表达式* this。如果函数需要返回一个对象,要返回的不是this,因为this是对象的地址,而不是对象本身。所以要使用this返回一个对象本身,需要使用解引用符*...原创 2021-07-10 13:06:22 · 77 阅读 · 0 评论 -
C++ 析构函数
用构造函数创建对象后,程序负责跟踪 对象,直到该对象过期为止。对象过期时,程序将调用一个特殊的成员函数–析构函数。析构函数主要在对象过期后完成相应的清理工作,如果构造函数使用了new来分配内存,则析构函数使用delete来释放这些内存。如果声明对象没有使用new关键字来分配内存,则析构函数实际上没有要完成的任务,在这种情况下,只需要让编译器自动生成一个什么也不做的析构函数。与构造函数所不同的是析构函数没有任何的参数。假设类名为Stock,则所对应的析构函数为:~Stock();通常情况下不会显示的调原创 2021-07-10 07:55:29 · 190 阅读 · 0 评论 -
C++ 构造函数
使用构造函数:C++提供了两种使用构造函数的初始化对象的方式。第一种方式是显示的调用构造函数:Stock food =Stock("World Cabbage",250,1.25);另一种方式是隐式的调用构造函数:Stock food("World Cabbage",250,1.25);相比于显示的调用构造函数,隐式调用构造函数显得调用更加紧凑。也可以使用new在创建构造函数时为对象分配内存:Stock * pstock = new Stock("Electroshock Games",18原创 2021-07-10 07:44:15 · 98 阅读 · 0 评论 -
C++类的使用
类:在C++中类是将抽象转换为用户定义类型的C++工具,它将数据表示和操纵数据的方法组合成一个整洁的包。下面以股票类来进行讲解:定义一个股票类需要存储以下信息:公司的名称;所持股票的数量;每股的价格;股票的总值;接下来定义股票类,一般来说,一个完整的类包含以下两个部分:类声明:以数据成员的方式描述数据部分,以成员函数(方法)的方式描述公有的接口;类方法的定义:描述如何实现类成员函数;简单来说,类的声明提供了类的蓝图,而方法定义则提供了细节。类中的接口:在类中,所说的公共接口,是使原创 2021-07-10 00:21:29 · 1684 阅读 · 1 评论 -
C++ 存储方案和动态分配
存储方案和动态分配:定位new运算符:通常,new负责在堆中找到一个足以能够满足要求的内存块,new运算符还有另外一种变体,被称为new定位运算符,能够指定要使用的内存位置。可以使用new的这种特性来设置其内存管理流程。对于下面的语句:int *pi=new int;将被翻译成:int *pi=new(sizeof(int));而下面的语句:int *pa=new int[40];将被转换为下面的语句:int *pa=new(40*sizeof(int));定位new运算发可以指原创 2021-07-09 16:30:39 · 94 阅读 · 0 评论 -
函数和链接性
C++ 不允许在一个函数中定义另外一个函数,因此所有的函数的存储持续性都自动为静态的,即在整个程序执行期间都一直存在。在默认情况下,函数的链接性为外部的,即可以在文件间共享。实际上可以在函数原型中使用关键字extern来指出函数是另外一个文件中定义的。还可以使用关键字static将函数的链接性设置为内部的,使之只能在一个文件中使用。必须同时在原型和函数定义中使用该关键字:static int private(double x);.....static int private(double x){.原创 2021-07-07 23:00:51 · 113 阅读 · 0 评论 -
C++再谈const
再谈const:在C++中,const限定符对默认存储类型稍有影响,在默认情况下全局变量的链接性为外部的,但const全局变量的链接性为内部的。也就是说,在C++看来,全局const定义就像使用了static说明符一样:const int fingers = 10;int main(){}在C++中将一组常量放在头文件中,并在同一个程序的多个文件中使用该头文件,那么预处理器将头文件的内容包含到每个原文件中后,所有的源文件都将包含类似下面这样的定义:const int fingers = 10原创 2021-07-06 00:03:45 · 80 阅读 · 0 评论 -
C++ 单独编译
C++ 程序可以分成三部分:头文件:包含结构声明和使用这些结构的函数的原型;源代码文件:包含与结构有关的函数的代码;源代码文件:包含调用与结构有关的函数的代码;注意:不要将函数定义和变量声明放置在头文件中,这样对简单的情况是可行的,但通常会引来麻烦。如果头文件中包含一个函数定义,然后在其他两个文件(属于同一个程序)中包含该头文件,则同一个程序中将包含同一个函数的两个定义,除非函数是内联的,否则这将出错。头文件中通常包含的内容有:函数原型使用#include或const定义的符号常量原创 2021-07-05 15:44:17 · 318 阅读 · 0 评论 -
C++ 函数模板
函数模板:C++ 函数模板是使用泛型的方式进行编程,其中的泛型可以用具体的类型(如int或double)替换,通过将类型作为参数传递给模板,可使编译器生成该类型的函数。函数功能模板可以节省修改程序的时间且更加可靠。如定义一个交换模板:template<typename AnyType>void Swap(AnyType &a,AnyType &b){ AnyType temp; temp=a; a=b; b=temp;}要建立一个函数模板,template原创 2021-07-05 14:22:04 · 78 阅读 · 0 评论 -
C++ 何时使用引用对象
何时使用引用对象:1:使用引用参数的两个主要原因:能够修改调用函数中的数据对象;通过传递引用而不是整个数据对象,可以提高整个程序的运行速度;罗列一些使用参数的指导原则:如果数据对象很小,如内置数据类型或小型结构,直接按值传递;如果数据对象是数组,则使用指针,这是唯一的选择,并将指针声明为指向const的指针;如果数据对象是较大的结构,则使用const指针或const引用,以提高程序运行的效率,这样可以节省复制结构所需的时间和空间;如果数据对象是类对象,则使用const原创 2021-07-05 13:28:56 · 140 阅读 · 0 评论 -
C++ 将引用用于类对象
将引用用于类对象:将类对象传递给函数时,通常的做法是使用引用,例如让函数将类string、ostream、istream、ofstream、和ifstream等类的对象作为参数。#include <iostream>#include <string>using namespace std;string version1(const string & s1,const string & s2);const string & version2(stri原创 2021-07-05 12:15:18 · 332 阅读 · 0 评论 -
C++ 将引用用于结构
将引用用于结构:引用非常适用于结构和类,使用结构引用参数的方式与使用基本变量引用相同,只需要在声明结构参数时使用运算符&。例:struct free_throws{ std::string name; int made; int attempts; float perent;}使用函数原型:void set_pc(free_throws &ft);如果不希望修改函数传入的结构,则需要使用const: void display(const free_throws &原创 2021-07-05 11:02:48 · 167 阅读 · 0 评论 -
C++ 引用的属性和特别之处
引用的属性和特别之处:#include<iostream>double cube(double a);double refcube(double &ra);int main(){ using namespace std; double x = 3.0; cout << cube(x); cout << " = cube of " << x << endl; cout << refcube(x); cout原创 2021-07-05 10:31:32 · 125 阅读 · 0 评论 -
C++ 将引用作为函数参数
将引用作为函数参数:原创 2021-07-05 10:06:05 · 117 阅读 · 0 评论 -
C++ 引用变量
引用变量:原创 2021-07-04 09:49:22 · 212 阅读 · 0 评论 -
C++ 函数指针
C++ 函数指针:可以编写,将另一个函数的地址作为参数的函数,这样第一个函数就能够找到第二个函数,并运行它,它允许在不同的时间传递不同函数的地址,可以在不同时间使用不同的函数。...原创 2021-07-03 17:50:21 · 137 阅读 · 0 评论 -
C++函数和array对象
函数和array对象:定义一个array来存储一年四季的开支:std::array<double,4> expenses;const std::array<std::string,4> Snames={"Spring","Summer","Fall","Winter"};// ConsoleApplication2.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include <iostream>#include <原创 2021-07-03 16:51:10 · 223 阅读 · 0 评论 -
C++ 函数和string对象
函数和string对象:C风格的字符串和string对象的用途几乎相同。声明一个string对象数组,并将该数组传递给一个函数以显示其内容:#include <iostream>#include <string>using namespace std;const int SIZE = 5;void display(const string sa[],int n);int main(){ string list[SIZE]; cout << "Enter原创 2021-07-01 17:59:57 · 111 阅读 · 0 评论 -
C++ 函数和结构(2)
C++ 函数传递结构的地址:假设要传递结构的地址而不是整个结构以节省时间和空间,则需要使用指向结构的指针。调用函数时,将结构的地址传递给它。为了充分使用指针的效率,应该使用指针而不是返回值,因此需要将两个指针传递给函数,第一个指针指向要转换的结构,第二个指针指向存储转换结果的结构。函数不会返回一个新的结构,而是修改调用函数中已有的结构,因此第一个指针需要是const型的指针,第二个参数不需要是。例:#include <iostream>#include <cmath>s原创 2021-07-01 17:28:13 · 114 阅读 · 0 评论 -
C++ 函数和结构(1)
函数和结构:数组名就是数组第一个元素的地址,与此不同,结构名只是结构的名称,要想获得结构的地址,必须使用取地址运算符&。将结构作为参数进行传递,如果复制结构将增加内存要求,降低系统运行的速度。在C语言中倾向于传递结构的地址,然后使用指针来访问结构的内容。C++中提供了第三种选择,使用引用传递。传递和返回结构:当结构比较小时,按值传递结构最合理。如:#include <iostream>struct travel_time{ int hours; int mins;};原创 2021-07-01 15:01:12 · 114 阅读 · 0 评论 -
C++函数返回C风格的字符串
函数返回C风格的字符串:函数无法返回一个字符串,可以返回一个字符串的地址,这样做的效率更高。#include <iostream>char* buildstr(char c,int n);int main(){ using namespace std; int times; char ch; cout << "Enter a character: "; cin >> ch; cout << "Enter an integer: ";原创 2021-07-01 14:18:36 · 337 阅读 · 0 评论 -
C++ 函数使用C风格参数
C++ 函数使用C风格参数:C风格的字符串参数由一系列的字符组成,将字符作为参数时意味着传递的是地址,可以使用const来禁止对字符参数的修改。将C风格的字符串作为参数传递给C++函数,表示的方法有三种:char数组;用引号括起来的字符串常量;被设置为字符串的地址的char指针;将C风格的字符串作为参数传递给C++函数,实际上传递的是字符串的第一个字符的地址。// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#i原创 2021-07-01 14:04:48 · 308 阅读 · 0 评论 -
C++ 读取CSV文件
C++ 读取CSV文件原创 2021-07-01 09:53:18 · 410 阅读 · 0 评论 -
C++ 函数和二维数组
函数和二维数组:int data[3][4] = {{1,2,3,4},{9,8,7,6},{2,4,6,8}};原创 2021-06-29 17:26:09 · 235 阅读 · 0 评论 -
C++ 指针和const
C++ 指针和const:将指针参数声明为指向常量数据指针的好处:可以避免由于无意间修改数据而导致的编程错误;使用const使得函数能够处理const和非const实参,否则将只能接受const数据。int age=39;const int* pt=&age;第二个声明中的const只能防止修改pt指向的值,而不能防止修改pt的值,也就是说可以赋值给pt一个新的地址。int sloth=3;const int* ps=&sloth;int* const finger原创 2021-06-29 16:37:00 · 147 阅读 · 0 评论 -
C++函数和数组
函数和数组C++和C语言一样将数组名视作指针。对于遍历数组而言,使用指针加法和数组下标时是等效的。如:arr[i]==*(ar+i);&arr[i]==ar+i;C++数组作为参数函数的声明:1:int sum_arr(int* _arr,int n);2:int sum_arr(int _arr[],int n);1和2在使用数组作为参数时是等效的。将数组名和指针对应是一件非常好的事情,可以节省复制整个数组所需要的时间和内存。如果数组很大,则使用拷贝的系统开销会很大,程序需要原创 2021-06-28 13:35:11 · 489 阅读 · 0 评论 -
C++函数详解
定义函数C++中定义函数的通用格式:typeName functionName(parameterList){ statements return value;}函数的分类:函数类型typeName没有返回值void有返回值typeName有返回值的函数必须要有返回语句,以便将值返回给调用函数。注: C++对返回值类型有一定的限制,返回类型为除数组以外的任何数据类型,甚至是数据结构和对象(数组虽然不能直接作为函数的返回值,却可以作为结构和对象的组原创 2021-06-04 16:42:41 · 282 阅读 · 1 评论 -
模板类Vector&array
vector使用模板类Vector需要包含vector的头文件,vector在插入或添加值的时候会自动调整长度,可以将声明的vector对象的初始长度设置为0,如:#icnlude <vector>...using namespace std;vector<int> vi;int n;cin>>n;vector<double> vd(n);vector 声明对象的格式为:vector<typeName> vt(n_elem);原创 2021-06-04 13:54:22 · 163 阅读 · 1 评论 -
C++ 分配内存的存储方式
存储方式1. 自动存储方式:在函数内部定义的常规变量使用的自动存储空间,被称为自动变量,自动变量又被称作为局部变量,在所属的函数被调用时自动产生,在函数调用结束时消亡。自动变量存储在栈中,在调用函数时,栈的大小会不断的增大和缩小。栈增大和缩小顺序为后进先出。2. 静态存储方式:静态存储是整个程序执行期间都存在的存储方式。命名静态的方式有两种:一种是在函数外面定义它,一种是在声明变量时使用关键字static.3. 动态存储方式:动态存储管理了一个内存池,这在程序中被称为自由存储空间或堆。new和d原创 2021-06-04 11:08:04 · 335 阅读 · 0 评论 -
C++堆和栈
程序内存分配一个由C/C++编译的程序占用的内存分为以下几个部分:栈区:栈区由编译器自动分配和释放,存放函数的参数值,局部变量值等,操作方式类似于数据结构中的栈。堆区:是由new非陪的内存块,由程序员释放,编译器一般不管,一般一个new和一个delete对应,如果程序员没有释放掉,资源将在操作系统在程序结束后自动回收。自由存储区:是由malloc等分配的内存单元,和堆十分相似,用free进行释放。全局/静态存储区:全局变量和静态变量被分配到同一内存块中(在C语言中,全局变量又分为初始化的和未初始原创 2021-06-03 14:17:27 · 211 阅读 · 2 评论 -
C++指针详解
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码原创 2021-06-03 11:40:56 · 2039 阅读 · 1 评论 -
C++值传递和引用传递
1.值传递代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import sslssl._create_default_https_context = ssl._create_unverified_context2.引用传递代码如下(示例):原创 2021-06-02 23:29:53 · 2693 阅读 · 0 评论 -
C++常量成员函数
长量成员函数C++中的常量成员函数,在参数列表后,加const关键字,声明为常量成员函数,表示该成员函数可以读取类中的数据成员,但不能对其进行修改。代码如下(示例):class complex{public: complex(double r=0,double i=0) //初值列表,这样赋值可以提高程序的运行效率 :re(r),im(i) {} complex& operator +=(const complex&); double real() const {ret原创 2021-06-02 22:54:02 · 251 阅读 · 0 评论 -
C++构造函数
构造函数原创 2021-06-02 17:28:47 · 101 阅读 · 0 评论 -
C++类中public、private、protected的访问优先级
访问优先级class complex{public://可以被该类中的函数、子类的函数、友元函数、和自己声明的对象访问; ...private://只能由该类中的函数,友元函数访问,不能被其他访问,也不可以由该类声明的对象进行访问; ...protected://只能由该类中的函数,子类的函数,友元函数进行访问,但不能由该类的对象进行访问; ...};...原创 2021-06-02 17:24:33 · 403 阅读 · 0 评论 -
C++内联函数
C++内联函数栈空间是指放置程式的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,调用函数,就会有函数入栈,假设频繁大量的使用就会造成栈内存空间的大量消耗。C++支持内联函数,目的是为了提高函数的执行效率,用关键字inline放在函数定义的前面,可以将函数指定为内联函数。内联函数可以在C++程序中取代宏,消除函数额外的执行开销。。内联函数代码示意示例:class complex{public: complex(double r=0,double i=0) :re(r),i原创 2021-06-02 17:07:37 · 78 阅读 · 0 评论