
C++
Bruce_0712
这个作者很懒,什么都没留下…
展开
-
char[],char *,string之间转换
char []与char *之间转换char []转char *:直接进行赋值即可// char[] 转char *char str[] = "lala";char *str1 = str;cout << str1 << endl;char *转char[]:字符拷贝实现,不能进行赋值操作// char *转换为char []const char *st = "hehe";char st1[] = "lalalala";strncpy(st1, st, st转载 2020-07-21 21:40:23 · 320 阅读 · 0 评论 -
20道必须掌握的C++面试题
在面试C++方面的工作时,经常会遇到各种面试题,这对应聘人员的知识掌握能力要求较高。本文将为大家带来的就是20道必须掌握的C++面试题,不要错过哦!想要快速轻松掌握C++知识,请点击C++微课边学习边实践问1:请用简单的语言告诉我C++ 是什么?答:C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。 其编程领域众广,常用于系统开发,引擎开发等应用领域,是最受广大程序员受用的最强大编程语言之一,支持类:类、封装..转载 2020-05-12 08:39:45 · 531 阅读 · 1 评论 -
一文搞懂TCP与UDP的区别
转载:https://www.cnblogs.com/fundebug/p/differences-of-tcp-and-udp.html转载 2020-05-11 14:05:19 · 336 阅读 · 0 评论 -
Static与Const的区别
staticstatic局部变量 将一个变量声明为函数的局部变量,那么这个局部变量在函数执行完成之后不会被释放,而是继续保留在内存中 static 全局变量 表示一个变量在当前文件的全局内可访问 static 函数 表示一个函数只能在当前文件中被访问 static 类成员变量 表示这个成员为全类所共有 static 类成员函数 表示这个函数为全类所共有,而且只能访问静态成员变量constconst 常量:定义时就初始化,以后不能更改。 const 形参:func(const int a)转载 2020-05-11 11:24:43 · 1888 阅读 · 0 评论 -
C++ 虚函数、纯虚函数
转载:https://zhuanlan.zhihu.com/p/37331092初步印象多态(polymorphism)是面向对象编程语言的一大特点,而虚函数是实现多态的机制。其核心理念就是通过基类访问派生类定义的函数。多态性使得程序调用的函数是在运行时动态确定的,而不是在编译时静态确定的。使用一个基类类型的指针或者引用,来指向子类对象,进而调用由子类复写的个性化的虚函数,这是C++实现多态性的一个最经典的场景。虚函数,在类成员方法的声明(不是定义)语句前加“virtual”, 如 virtua转载 2020-05-11 10:07:50 · 404 阅读 · 0 评论 -
C++之istringstream、ostringstream、stringstream 类详解
0、C++的输入输出分为三种:(1)基于控制台的I/O (2)基于文件的I/O (3)基于字符串的I/O 1、头文件[cpp] view plaincopyprint?#include 2、作用istringstream类用于执行C++风格的字符串流的输入操作。 ostringstream类用转载 2017-06-06 23:45:13 · 1591 阅读 · 0 评论 -
关于extern和static关键字的全面总结
(1)编译单元(模块) 在VC或VS上编写完代码,点击编译按钮准备生成exe文件时,编译器做了两步工作:第一步,将每个.cpp(.c)和相应的.h文件编译成obj文件;第二步,将工程中所有的obj文件进行LINK,生成最终.exe文件。 那么,错误可能在两个地方产生:一个,编译时的错误,这个主要是语法错误;一个,链接时的错误,主要是重复定义变量等。原创 2016-12-06 15:20:07 · 679 阅读 · 0 评论 -
C++中 #ifdef 和#endif的作用
一般情况下,源程序中所有的行都参加编译。但是有时希望对其中一部分内容只在满足一定条件才进行编译,也就是对一部分内容指定编译的条件,这就是“条件编译”。有时,希望当满足某条件时对一组语句进行编译,而当条件不满足时则编译另一组语句。 条件编译命令最常见的形式为: #ifdef 标识符 程序段1 #else 程序段2 #endif它的作用是:当标识符已经被定义过(一般转载 2016-12-12 20:46:29 · 870 阅读 · 1 评论 -
C++ 多继承构造函数初始化列表调用顺序
class B1 {public: B1(int i) {cout"consB1" };//定义基类B1 class B2 {public: B2(int j) {cout"consB2" };//定义基类B2 class B3 { public: B3() {cout"consB3 *"原创 2016-12-20 10:43:04 · 4918 阅读 · 2 评论 -
C++之详解coredump
一,什么是coredump 我们经常听到大家说到程序core掉了,需要定位解决,这里说的大部分是指对应程序由于各种异常或者bug导致在运行过程中异常退出或者中止,并且在满足一定条件下(这里为什么说需要满足一定的条件呢?下面会分析)会产生一个叫做core的文件。 通常情况下,core文件会包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆转载 2017-05-31 23:06:11 · 9498 阅读 · 0 评论 -
C++之using namespace std 详解与命名空间的使用
所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。一 :iostream>和iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定转载 2017-05-31 22:26:15 · 35080 阅读 · 1 评论 -
【C/C++】计时函数比较
目前,存在着各种计时函数,一般的处理都是先调用计时函数,记下当前时间tstart,然后处理一段程序,再调用计时函数,记下处理后的时间tend,再tend和tstart做差,就可以得到程序的执行时间,但是各种计时函数的精度不一样.下面对各种计时函数,做些简单记录. 方法1,time()获取当前的系统时间,返回的结果是一个time_t类型,其实就是一个大整数,其值表示从CUT(Coordinat转载 2017-06-15 21:24:11 · 532 阅读 · 0 评论 -
C++之文件读写详解(ofstream,ifstream,fstream)
在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结:这里主要是讨论fstream的内容:[java] view plain copy print?#include ofstream //文件写操作 内存写入存储设备转载 2017-05-30 09:32:50 · 970 阅读 · 0 评论 -
C++之switch case语句详解
我们已经了解,if……else……可以用来描述一个“二岔路口”,我们只能选择其中一条路来继续走。然而,有时候我们会遇到一些“多岔路口”的情况,用if……else……语句来描述这种多岔路口会显得非常麻烦,而且容易把思路搅浑。比如程序4.2.2就是一个用if……else……语句描述的四岔路口(四种操作符),整个程序占据了将近一页。如果我们把这些多岔路看作电路,那么用if……else……这种“普转载 2017-05-30 08:56:55 · 56965 阅读 · 1 评论 -
模板类与类模板、函数模板与模板函数等的区别 (四)
在C++中有好几个这样的术语,但是我们很多时候用的并不正确,几乎是互相替换混淆使用。下面我想彻底辨清几个术语,这样就可以避免很多概念上的混淆和使用上的错误。这几个词是: 函数指针——指针函数 数组指针——指针数组 类模板——模板类 函数模板——模板函数 最终在使用中,我们就可以让它们实至名归,名正言顺。 1.函数指针——指针函数转载 2017-05-23 00:09:54 · 474 阅读 · 0 评论 -
C++之函数模板与类模板的区别(三)
函数模板与类模板有什么区别?答:函数模板的实例化是由编译程序在处理函数调用时自动完成的,而类模板的实例化 必须由程序员在程序中显式地指定。即函数模板允许隐式调用和显式调用而类模板只能显示调用这期间有涉及到函数模板与模板函数,类模板与模板类的概念(类似于类与类对象的区别)请看下面例子注意:模板类的函数声明和实现必须都在头文件中完成,不能像普通类那样声明在.h文件中实现在.cp转载 2017-05-22 23:52:00 · 2900 阅读 · 0 评论 -
C++之构造函数(一)
构造函数是类的一个特殊的成员函数,它与类名同名。当定义该类的对象时,构造函数将被系统自动调用用以实现对该对象的初始化。构造函数不能有返回值,因而不能指定包括void在内的任何返回值类型。构造函数的定义域其他函数的定义一样,可以放在类内或类外。 与构造函数相对应的是析构函数,当撤销类对象时,析构函数回收存储空间,并做一些善后工作。构造函数与析构函数都属于类,可以由用户提供,也可以由原创 2016-12-13 09:34:46 · 449 阅读 · 0 评论 -
C++之构造函数(二) 构造函数初始化
一、我的问题是关于初始化C++类成员的。我见过许多这样的代码: CSomeClass::CSomeClass() { x=0; y=1; } 而在别的什么地方则写成下面的样子: CSomeClass::CSomeClass() : x(0), y(1) { } 我的一些程序员朋友说第二种方法比较好,但他们都不知道为什么是这样。你能告诉我这两种原创 2016-12-13 10:31:29 · 577 阅读 · 0 评论 -
C++之构造函数(三) 多重继承构造函数初始化
#includeusing namespace std;class human{public:human(int);virtual ~human(){coutvirtual int walk(){return itwalk;}virtual void setwalk(int w){itwalk=w;}private:int itwalk;};huma原创 2016-12-13 19:35:30 · 1451 阅读 · 1 评论 -
Linux下gcc编译生成动态链接库*.so文件并调用它
动态库*.so在linux下用c和c++编程时经常会碰到,最近在网站找了几篇文章介绍动态库的编译和链接,总算搞懂了这个之前一直不太了解得东东,这里做个笔记,也为其它正为动态库链接库而苦恼的兄弟们提供一点帮助。1、动态库的编译下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动...转载 2018-02-10 20:12:49 · 571 阅读 · 0 评论 -
C++之static—类不需实例化就能用?
一般情况下,需要用到某个类的时候,都必须先实例化这个类,才能对其进行调用。在编程过程中发现,有些类不用实例化就可以直接拿来使用,使用它的字段、方法等等。 这时候,靠的就是static作用。static英文意思为“静止的,静态的”,在OOP中可以作为修饰符,类、字段、属性、方法等被static修饰后,变为静态类、静态字段、静态属性、静态方法…… static修饰的类成转载 2017-11-18 17:50:35 · 11373 阅读 · 2 评论 -
C++中虚析构函数的作用
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout "Do转载 2017-11-12 18:43:57 · 301 阅读 · 0 评论 -
c++强制类型转换:dynamic_cast、const_cast 、static_cast、reinterpret_cast
dynamic_cast: 通常在基类和派生类之间转换时使用const_cast: 主要针对const和volatile的转换static_cast: 一般的转换(no run-time check)通常,如果你不知道该用哪个,就用这个。 reinterpret_cast: 用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。1)static_ca转载 2017-11-09 23:11:34 · 923 阅读 · 0 评论 -
C++之三种创建对象方法的区别
我们都知道C++中有三种创建对象的方法,如下:复制代码代码如下:#include using namespace std;class A{private: int n;public: A(int m):n(m) { } ~A(){}};int main(){ A a(1); //栈中分配转载 2017-10-10 23:14:55 · 782 阅读 · 0 评论 -
C/C++之typedef函数指针用法
1.简单的函数指针的应用形式1:返回类型(*函数名)(参数表) [cpp] view plain copy char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); }转载 2017-08-20 17:30:11 · 4484 阅读 · 0 评论 -
C++之智能指针shared_ptr
C++中的智能指针首先出现在“准”标准库boost中。随着使用的人越来越多,为了让开发人员更方便、更安全的使用动态内存,C++11也引入了智能指针来管理动态对象。在新标准中,主要提供了shared_ptr、unique_ptr、weak_ptr三种不同类型的智能指针。接下来的几篇文章,我们就来总结一下这些智能指针的使用。今天,我们先来看看shared_ptr智能指针。shared_pt转载 2017-06-13 21:25:44 · 789 阅读 · 0 评论 -
C/C++之回调函数详解
今天讨论下C/C++中的回调函数。 在理解“回调函数”之前,首先讨论下函数指针的概念。函数指针(1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需要加载到内存中,这就决定了程序运行时的任何物件都可以用指针来指向它。函数是存放在内存代码区域内的,它们同样有地址,因此同样可以用指针来存取函数,把这种指向函数入口地址的指针称为函数指针。(2转载 2017-07-04 23:51:18 · 896 阅读 · 1 评论 -
C++之explicit详解
在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很高的。了解explicit关键字的功能及其使用对于我们阅读使用库是很有帮助的,而且在编写自己的代码时也可以尝试使用。既然C++语言提供这种特性转载 2016-12-15 10:55:16 · 671 阅读 · 0 评论 -
C++ namespace详解
关于C++ namespace,我们需要回答如下几个问题:1、什么是namespace?2、为什么有namespace?也就是namespace的作用3、namespace的使用方法有哪些?(一)什么是namespace? 首先我们看看C++标准规范中对namespace的定义如下: named-namespace-definitio原创 2016-12-14 19:40:29 · 8510 阅读 · 1 评论 -
C++之类模板详解(一)
C++ 除了支持函数模板,还支持类模板(Class Template)。函数模板中定义的类型参数可以用在函数声明和函数定义中,类模板中定义的类型参数可以用在类声明和类实现中。类模板的目的同样是将数据的类型参数化。声明类模板的语法为:template class 类名{ //TODO:};类模板和函数模板都是以 template 开头(当然也可以使用 class,目前来转载 2017-05-22 23:16:45 · 856 阅读 · 0 评论 -
C++之函数模板详解(二)
在《C++函数重载》一节中,为了交换不同类型的变量的值,我们通过函数重载定义了四个名字相同、参数列表不同的函数,如下所示://交换 int 变量的值void Swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp;}//交换 float 变量的值void Swap(float *a, float *b){转载 2017-05-22 23:40:48 · 737 阅读 · 0 评论 -
C++之public、private、protected(三)类public和private浅谈
最忌讳的就是利用C++写C代码!利用C++写C代码最主要的一个特点之一把类里面所有的数据都声明成public的,本文就浅谈了一下如何利用public和private将代码分开的方法~~~ 1.关键字public可以将类的成员说明为是公有的,及可以被该类的所有成员所访问; 2.关键字private可以将类的成员说明为是私有的,它不能直接被对象访问。 其转载 2017-02-16 09:10:14 · 627 阅读 · 0 评论 -
C++之public、private、protected(二)构造函数定义private或protected好处详解
将构造函数,析构函数声明为私有和保护的,那么对象如何创建?已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造,析构函数声明为私有和保护时的用法??? 提出这个问题,说明你已经对c++有所思考了。从语法上来讲,一个函数被声明为protected或者private,那么这个函数就不能从“外部”直接被调用了。对于protected的函数,子类的“内部”的其转载 2017-02-16 09:06:49 · 2247 阅读 · 2 评论 -
C++之静态成员变量和静态成员函数详解
数据成员可以分为静态变量、非静态变量两种。静态成员:静态类中的成员加入static修饰符,即是静态成员,可以使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态成员,因为静态成员存在于内存,所以非静态成员可以直接访问类中的静态成员。非静态成员:所以没有加static的成员都是非静态成员,当类被实例化后,可以通过实例转载 2017-02-15 12:50:57 · 403 阅读 · 0 评论 -
C++之public、private、protected(一)派生类继承与访问权限详解
第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。protected:可以被1.该类中的函数、2.子类的函数、以及3.其友元函数访问。但不能被该类的对象访问。public:可以被1.该类中的函数、2.子类的函数、3.其友元函数访问,也可以由4.转载 2017-02-15 09:12:36 · 1138 阅读 · 0 评论 -
C++之STL基本容器的使用
C++中有两种类型的容器:顺序容器和关联容器。顺序容器主要有vector、list、deque等。其中vector表示一段连续的内存,基于数组实现,list表示非连续的内存,基于链表实现,deque与vector类似,但是对首元素提供插入和删除的双向支持。关联容器主要有map和set。map是key-value形式,set是单值。map和set只能存放唯一的key,multimap和multise转载 2017-02-15 08:46:38 · 296 阅读 · 0 评论 -
C++之类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast详解
一、 强制转型1) C 风格(C-style)强制转型:(T) exdivssion // cast exdivssion to be of type T2) 函数风格(Function-style)强制转型使用这样的语法:T(exdivssion) // cast exdivssion to be of type T上面两种形式之间没有转载 2017-02-14 08:57:44 · 415 阅读 · 0 评论 -
C++之函数对象/伪函数(Function Object)详解(二)
除了自定义的函数对象,标准库还为我们提供了一系列现成的函数对象, 比如常见的数学、逻辑运算等。例如:negate(),plus(),minus(),multiplies(),divides(),modulus(),equal_to,greater(),less(),logical_not(),logical_and(),等等。 关于函数对象的最后一个很重要的概念是“函数适配器”。函转载 2017-02-13 15:05:45 · 1838 阅读 · 0 评论 -
C++之运算符重载详解
C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。例如: class complex { public: complex(double r=0.0,double I=0.0){real=r;imag=I;} void display(); private: double real; dou转载 2017-02-13 13:51:18 · 624 阅读 · 0 评论 -
C/C++之mutable关键字详解
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面修改一转载 2017-02-17 09:42:41 · 1338 阅读 · 0 评论