C++/C
文章平均质量分 93
C
博_采_众_长
理论与实践并行!
展开
-
Cstring和string的区别和联系
Cstring和string的区别和联系string 转 CStringCString.format("%s", string.c_str());//用c_str()确实比data()要好char 转 CStringCstring.format("%s", char*);char 转 stringstring s(char*);//只能初始化,在不是初始化的地方最好还是用assign().string 转 char*char *p = string.c_str();转载 2020-10-16 21:11:14 · 955 阅读 · 1 评论 -
C++的string类型中关于append函数、push_back函数和+=运算符的区别
部分内容翻译自 https://www.geeksforgeeks.org/stdstringappend-vs-stdstringpush_back-vs-operator-c/?ref=lbp引言C++的string类中,要想在字符串后附加字符,可以使用append函数、push_back函数或者是+=运算符,这些附加字符的方法其实现不尽相同,因此应用场景也不同。首先我们先一窥源码(gcc 4.9.2):basic_string.h: //-------------------------.转载 2020-10-16 19:09:21 · 6402 阅读 · 0 评论 -
C++中的array容器
c++ 11中提供了数组类Array(容器)该Array的引入引入为C风格的数组提供了更好的选择。array类相对于c类数组有以下的优点:1. 数组类(Array class)知道自己的大小,而c风格的数组缺乏此属性。所以当传递给函数时,我们不需要把数组的大小作为单独的参数传递。 2. 使用c风格的数组,数组退化为指针的风险更大;而数组类不会衰退为指针。 3. Array通常比c风格的数组更有效、更轻、更可靠。 数组上的操作: 1 .at():用于访问数组的元素 2 . get():也用于访问数组的元素转载 2020-10-14 10:08:21 · 197 阅读 · 0 评论 -
C++ memset() 详解
菜鸟教程 memset1️⃣C++中memset()用法memset()函数原型是extern void *memset(void *buffer, int c, int count)buffer:为指针或是数组 c:是赋给buffer的值 count:赋值buffer中的位数 1. memset是以字节为单位,初始化内存块。 当初始化一个字节单位的数组时,可以用memset把每个数组单元初始化成任何你想要的值,比如, char data[10]; memset(data, 1, sizeof(d转载 2020-10-14 08:58:56 · 3513 阅读 · 1 评论 -
OJ神器 - sync_with_stdio
很多人会说cin的速度比scanf慢很多, 其实不然, 其实默认的时候,cin与stdin总是保持同步的,也就是说这两种方法可以混用。而不必担心文件指针混乱,同时cout和stdout也一样,两者混用不会输出顺序错乱。 正因为这个兼容性的特性,导致cin有许多额外的开销。 只需要加上std::ios::sync_with_stdio(false)来关闭同步就好了, 速度甚至要优于scanf。 sync_...转载 2020-10-13 15:24:29 · 418 阅读 · 0 评论 -
C++超市管理系统(直接可以运行)
C++超市管理系统心得写这个东西最重要环节不是上手去实现代码,而是再此之前的整体的系统分析,分析整个系统所需要定义的类,以及不同类实现的功能,以及类与类之间的消息的传递。最重要的还有模块之间的解耦,为后续的迭代,二次开发打好基础。由于还有两天就开学了,所以本人直接就略过最重要的一步系统分析,直接开始敲了,边敲边考虑类的设计,这样导致的结果就是类所属功能的划分不够明确,部分代码冗余,以及为了实现老师作业中的几个继承组合的要求,导致整个系统有些地方并不是十分合理,本系统只是实现了最基本的功能模块,且进货.原创 2020-09-04 16:07:45 · 31500 阅读 · 1083 评论 -
C++获取当前系统时间并格式化输出
#include <string>#include <time.h>using namespace std;string getTime(){ time_t timep; time (&timep); char tmp[64]; strftime(tmp, sizeof(tmp), "%Y-%m-%d %H:%M:%S",localtime(&timep) ); return tmp;}int main(){转载 2020-09-03 22:35:13 · 424 阅读 · 0 评论 -
Codeblocks同一工程下建立多个源文件
最近在给C语言知识点扫盲。由于代码量较大,正使用的codeblocks想分成多个源文件。优点:一、代码写起来分方便,不同文件实现不同功能,一览无余。二、代码量更加美观,强迫症福音。三、删库跑路后给接手的程序猿 程序媛 提供便捷。话不多说,直接上步骤:1.新建一个含有终端的工程。2.选择C/C++文件都可以,这里以C++为例。3.找一个合适的位置存放,并命名。4.建立完成。5.编写一个简单的代码。6.同一工程下建立新的源文件。7.进行确认建立后,放在与main相同的工程目录转载 2020-08-29 17:57:25 · 5108 阅读 · 3 评论 -
CodeBlocks创建工程及其使用配置
一、文件——新建——项目 二、选择——Console application 三、下一步,根据自己要编写的程序语言选择 四、填写项目名和路径五、创建项目成功...转载 2020-08-29 16:55:04 · 338 阅读 · 0 评论 -
C++ 编译报错 undefined reference to “vtable for child”
先说结果: 父类定义的虚函数,子类如果重载了 ,那就必须定义具体实现,不能弄个没有函数体的函数名放那里碰瓷。 #include<iostream> using namespace std; class parent{public: parent(){ std::cout<<"parent const...转载 2020-06-21 13:03:28 · 397 阅读 · 0 评论 -
C++面向对象(一):面向对象程序设计概述
C++面向对象:面向对象程序设计概述会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!1.什么是面向对象程序设计面向对象程序设计方法是通过增加软件的可扩充性和可重 性来提高程序员的编程能力的 。1.1 面向过程程序设计的基本概念面向过程的程序设计思想的核心是功能的分解。数据结构和过程的这种分离, 给软件人员 造成沉重的负担。1.2 面向对象程序设计的基本概念在面向对象的程序设计 中,着重点在那些将要被操作的数据, 而不是原创 2020-06-20 08:52:19 · 6145 阅读 · 0 评论 -
C++面向对象(二):C++ 概述
C++面向对象:C++ 概述会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!1.C + + 的起源和特点1.1 C + + 的起源C + + 是美国贝尔实验室的 Bjarne Stroustrup 博士在 C 语言的基础上, 弥补了 C 语言 存在的一些缺陷,增加了面向对象的特征, 于 1980 年开发出来的一种过程性与对象性结 合的程序设计语言。最初他把这种新的语言叫做“含类的 C”,到 1983 年才取名为C + + 。原创 2020-06-20 22:08:15 · 678 阅读 · 0 评论 -
C++面向对象(三):类和对象
C++面向对象:类和对象会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!1.类与对象的基本概念1.1 结构与类1 . 结构的扩充结构是 C 语言的一种自定义的数据类型, 在结构体中可以含有各种不同类型的数 据。C + + 语言对结构类型进行了扩充, 它不仅可以含有不同类型的数据, 而且还可以含有函数。结构中的数据和函数都是结构的成员,分别称作数据成员和函数成员。在 C + + 中, 通常把 函 数 成 员 称 为 成 员原创 2020-07-26 20:19:57 · 1476 阅读 · 2 评论 -
C++面向对象(四):派生类与继承
C++面向对象:C++ 概述会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!1.C + + 的起源和特点1.1 C + + 的起源...原创 2020-07-26 21:10:54 · 2230 阅读 · 0 评论 -
C++面向对象(五):多态性
C++面向对象:多态性会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!1 . 编译时的多态性与运行时的多态性所谓多态性就是不同对象收到相同的消息时,产生不同的动作。通俗地说, 多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作, 即用同样的接口访问功能不同的函数,从而实现“一个接口,多种方法”。在 C + + 中,多态性的实现和联编这一概念有关。一个源程序经过编译、连接, 成为可执行文件的过程是把可执行代码原创 2020-05-16 09:32:12 · 1165 阅读 · 2 评论 -
C++面向对象(七):I / O 流类库
C++面向对象(七):I / O 流类库会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!1. C++ 为何建立自己的输入输出系统C++ 系统提供了一个用于输入输出( I/ O)操作的类体系, 这个类体系提供了对预定义类型进行输入输出操作的能力,程序员也可以利用这个类体系进行自定义类型的输入输出操作。C 语言的输入输出系统是一个使用灵活、功能强大的系统。那么, 为什么 C + + 还要建立自己的输入输出系统呢 ?这是因为在原创 2020-05-17 21:19:43 · 2013 阅读 · 0 评论 -
C++面向对象(六):模板
C++面向对象:模板会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!会有点长,不过读过就全学会喽!!!!!!1 . 模板的概念由于 C + + 是强类型语言,因此我们定义求最大值函数 max( )时, 需要对不同的数据类型分别定义不同的版本,例如:int max (int x, int y){ return ( x > y) ? x∶y;}float max(float x, float y){ return ( x > y)原创 2020-05-16 16:39:57 · 843 阅读 · 0 评论 -
C++:文件流读写操作
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O. stream这个类有两个重要的运算...转载 2020-06-21 09:47:07 · 1345 阅读 · 0 评论 -
C++派生类与继承(超详细)
一.派生类的概念1.为什么要使用继承继承性也是程序设计中的一个非常有用的、有力的特性, 它可以让程序员在既有类的基础上,通过增加少量代码或修改少量代码的方法得到新的类, 从而较好地解决了代码重用的问题。2.派生类的说明在类名 employee 的冒号之后, 跟着关键字 public 与类名 person,这就意味着类 employee 将继承类 person 的全部特性。关键字 public 指出派生的方式,告诉编译程序派生类employee从基类 person 公有派生。// 定义一个基类(原创 2020-05-13 22:59:09 · 34772 阅读 · 37 评论 -
类对象作为成员
在类定义中定义的数据成员一般都是基本的数据类型。但是类中的成员也可以是对象,叫做对象成员。使用对象成员着重要注意的问题是构造函数的定义方式, 即类内部对象的初始化问题。含有对象成员的类, 其构造函数和不含对象成员的构造函数有所不同, 例如有以下的类:class X{ 类名 1 成员名 1; 类名 2 成员名 2; ... 类名 n 成员名 n;};一般来说,类 X 的构造函数的定义形式为:X∷X(参数表 0) :成员名 1 (参数表 1),…,原创 2020-05-08 19:39:15 · 517 阅读 · 0 评论 -
友元
在不放弃私有数据安全性的情况下, 使得类外部的函数或类能够访问类中的私有成员,在 C + + 中就用友元作为实现这个要求的辅助手段。友元既可以是不属于任何类的一般函数,也可以是另一个类的成员函数, 还可以是整个的一个类(这样, 这个类中的所有成员函数都可以成为友元函数)。友元函数友元函数不是当前类的成员函数,而是独立于当前类的外部函数, 但它可以访问该类的所有对象的成员,包括私有成员和公有成员。在类定义中声明友元函数时, 需在其函数名前加上关键字 friend。此声明可以放在公有部分,也可以放在私原创 2020-05-08 19:19:03 · 1354 阅读 · 0 评论 -
静态数据成员和静态成员函数
静态数据成员静态数据成员属于类( 准确地说,是属于类中一个对象集合 ) , 而不像普通数据成员那样属于某一对象,因此可以使用“类名∷”访问静态的数据成员。例如上面例子中的 Student∷count。静态数据成员不能在类中进行初始化, 因为在类中不给它分配内存空间, 必须在 类外的其它地方为它提供定义。一般在 main()开始之前, 类的声明之后的特殊地带为它 提供定义和初始化。缺省时,静态...原创 2020-05-06 22:06:06 · 1227 阅读 · 0 评论 -
构造函数与析构函数
构造函数与析构函数当声明一个类对象时, 编译程序需要为对象分配存储空间, 进行必要的初始化, 这部分工作随着类的不同而不同。在 C + + 中, 由构造函数来完成这些工作。构造函数是属于某一个类的,它可以由用户提供, 也可以由系统自动生成。与构造函数对应的是析构函数, 当撤消类对象时, 析构函数就回收存储空间,并做一些善后工作。析构函数也属于某一个类, 它可以由用户提供, 也可以由系统自动生成。...原创 2020-05-06 20:30:03 · 778 阅读 · 0 评论 -
成员函数的定义
成员函数的定义如上所述, 类中含有两种成份,即数据成员和成员函数, 其中成员函数也称方法。实际上,成员函数和方法指的是同一种实体, 是一种实体的两种不同叫法, 成员函数是程序设计语言 C + + 中的术语,而方法是面向对象方法中的术语。在以后的叙述中, 本书采用术语成员函数。成员函数的定义通常采用两种方式。第一种方式是在类声明中只给出成员函数的原型, 而成员函数体在类的外部定义。这种成员函数...原创 2020-05-06 17:03:55 · 7170 阅读 · 1 评论 -
结构与类
结构与类1 . 结构的扩充结构是 C 语言的一种自定义的数据类型, 在结构体中可以含有各种不同类型的数据。C + + 语言对结构类型进行了扩充, 它不仅可以含有不同类型的数据, 而且还可以含有函数。例如下面声明了一个复数的结构:struct complex{ double real; // 复数的实部 double imag; // 复数的虚部 vo...原创 2020-05-06 16:46:06 · 474 阅读 · 0 评论 -
引用返回值
引用返回值函数可以返回一个引用,将函数说明为返回一个引用的主要目的是: 将该函数用在值运算符的左边。请看下面的例子。#include < iostream .h >int a[ ] = {1, 3, 5, 7, 9} ;int &index(int) ;// 声明返回引用的函数 void main( ){ index (2 ) = 25; / / 将...原创 2020-05-06 16:08:29 · 187 阅读 · 0 评论 -
深度解析内联函数
1.什么是内联函数用关键字inline修饰的函数就是内联函数。关键字在函数声明和定义的时候都要加上,不写系统还是会当成常规函数 2.内联函数与一般函数的区别1)内联含函数比一...转载 2020-05-06 11:41:39 · 198 阅读 · 0 评论 -
const修饰符
在 C 中,习惯使用 # define 来定义常量, 例如:#define LIMIT 100 ;C + + 提供了一种更灵活、更安全的方式来定义常量, 即使用 const 修饰符来定义常量,例如:const int LIMIT = 100;这个常量是类型化的,它有地址, 可以用指针指向这个值,但不能修改它。const 也可以与指针一起使用,它们的组合情况较复杂, 可归纳为三种:指向常...原创 2020-05-06 11:31:07 · 189 阅读 · 0 评论 -
继承与封装
继承与封装均提供了共享代码的手段,因而增加了代码的重用性。继承提供的代码共享是静态的,派生类对象在成为活动的实体以后, 自动地共享其基类中定义的代码段,从而使基类对象与其派生类对象共享一段代码。封装提供的代码共享是动态的,例如我们在一个类中说明了一段代码, 那么属于该类的多个实例在程序运行时共享在类中说明的那段代码。...原创 2020-05-03 21:00:58 · 123 阅读 · 0 评论 -
面向对象 和 面向过程
面向对象的思想是在面向过程之后才出现的,让我们首先来看看什么是面向过程吧!面向过程面向过程的程序设计思想的核心是功能的分解。当程序员试图用 C 或 Pascal 语言来设计程序以解决一个实际问题时,第一步要做的工作就是将问题分解成若干个称为模块的功能块,然后根据模块功能来设计一系列用于存储数据的数据结构, 最后编写一些过程(或函数) 对这些数据进行操作。最终的程序就是由这些过程构成的。显然,...原创 2020-05-01 11:18:04 · 645 阅读 · 0 评论 -
C++ new对象与直接声明对象区别
区别首先,最直观的,new出来的对象需要使用指针接收,而直接声明的不用。例如 A* a=new A() 与A a()。new出来的对象是直接使用堆空间,而局部声明一个对象是放在栈中。new出来的对象类似于申请空间,因此需要delete销毁,而直接声明的对象则在使用完直接销毁。new出来的对象的生命周期是具有全局性,譬如在一个函数块里new一个对象,可以将该对象的指针返回回去,该对象依旧存...原创 2020-06-06 21:33:47 · 1753 阅读 · 1 评论 -
C++之构造函数深度解析
构造函数是什么?构造函数是特殊的成员函数,只要创建类类型的新对象,都要执行构造函数。构造函数的工作是保证每个对象的数据成员具有合适的初始值。class Sales_item{public: //operations on Sales_item objects //default constructor needed to initialize members of buil...原创 2020-04-10 20:50:21 · 182 阅读 · 0 评论