
C++基础
Howardk
这个作者很懒,什么都没留下…
展开
-
c++返回引用的好处
在c++中,函数返回引用,可以减少拷贝构造函数的调用次数,提高效率。#include <iostream>using namespace std;class C1{private: int a; int b;public: C1(int a=0,int b=0) //构造函数 { this->a = a; this->b = b; ...原创 2018-12-13 13:21:57 · 1998 阅读 · 0 评论 -
C中的malloc和C++中的new有什么区别?
(1)new,delete是操作符,只能在C++中使用;(2)malloc,free是函数,可以覆盖,C,C++中都可以使用;(3)new可以调用对象的构造函数,对应的delete调用相应的析构函数;(4)malloc仅仅分配内存,free仅仅回收内存,并不执行构造和析构函数;(5) malloc/free需要手动计算类型大小且返回值为void*,new/delete可自己计算对应类型的大...转载 2019-06-20 20:40:46 · 270 阅读 · 0 评论 -
C++ 类的6个缺省函数
文章来源:https://blog.youkuaiyun.com/l953972252/article/details/51628595在C++中默认产生6个类成员函数,即缺省函数,它们分别是:缺省构造函数 缺省拷贝构造函数 缺省析构函数 缺省赋值运算符 缺省取址运算符 缺省取地址运算符const很多人以为只有前4个缺省函数,事实上有6个。代码验证如下:#include <...转载 2019-06-20 21:00:20 · 2166 阅读 · 0 评论 -
C++之Lambda表达式
文章来源:https://www.cnblogs.com/jimodetiantang/p/9016826.html1. 概述C++ 11 中的 Lambda 表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda 的语法形式如下:[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {函数体}可以看到,Lambd...转载 2019-06-23 19:04:51 · 274 阅读 · 0 评论 -
C++:四种必须使用初始化列表情况
文章来源:https://www.cnblogs.com/XYQ-208910/p/4912872.html1. 类成员为const类型2. 类成员为引用类型#include <iostream>using namespace std; class A{ public: A(int &v) : i(v), p(v), j(v) {}...转载 2019-06-27 09:32:36 · 332 阅读 · 0 评论 -
C++ STL中容器的使用全面总结
文章来源:https://blog.youkuaiyun.com/u014465639/article/details/70241850一、容器的定义在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法。二、容器的种类1、顺序容器:是一种各元...转载 2019-06-27 12:57:00 · 164 阅读 · 0 评论 -
C语言中函数strcpy ,strncpy ,strlcpy的用法
文章来源:https://www.linuxidc.com/Linux/2012-06/61893.htm好多人已经知道利用strncpy替代strcpy来防止缓冲区越界,但是如果还要考虑运行效率的话,也许strlcpy是一个更好的方式。1. strcpystrcpy 是依据 /0 作为结束判断的,如果 to 的空间不够,则会引起 buffer overflow。strcpy 常规的实现代...转载 2019-07-09 22:06:51 · 525 阅读 · 0 评论 -
C语言函数可变长参数
1. 什么是可变长参数可变长参数:顾名思义,就是函数的参数长度(数量)是可变的。比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的。 printf 函数的声明:int printf ( const char * format, ... );可变参数函数声明方式都是类似的。2.如何实现C语言可变参数通过三个宏(va_start、va_end、va_a...转载 2019-07-31 22:12:59 · 1563 阅读 · 0 评论 -
智能指针(1)——简介
1 . 为什么有智能指针?c++程序员需要自己善后自己动态开辟的内存,一旦忘了释放,内存就泄露。智能指针可以帮助程序员"自动释放"自己开辟的内存。2. 从哪里看出来智能了?int *p = new int(11);auto_ptr<int> pa(p);//auto_ptr已经不推荐使用//delete p;上面的代码把p交给智能指针auto_ptr管理后,就不需...转载 2019-08-30 20:31:19 · 150 阅读 · 0 评论 -
sizeof与strlen的区别
文章来源:https://blog.youkuaiyun.com/M_joy666/article/details/80471230一、基本定义1、sizeof是C/C++中的一个运算符,其作用是返回一个对象或者类型在内存中所占用的字节数。注意:sizeof后面如果是类型则必须加括号,如 sizeof(char);而如果是变量名则可以不加括号,如 sizeof a; 但是建议使用时均加...转载 2019-06-20 20:37:49 · 104 阅读 · 0 评论 -
C++虚函数表分析
文章来源:https://mp.youkuaiyun.com/postedit先看代码:#include <iostream>using namespace std;class Base {public: virtual void f() {cout<<"base::f"<<endl;} virtual void g() {cout<...转载 2019-06-20 20:14:20 · 108 阅读 · 0 评论 -
全局变量与全局静态变量的区别
全局变量与全局静态变量的区别:1、若程序由一个源文件构成时,全局变量与全局静态变量没有区别。2、若程序由多个源文件构成时,全局变量与全局静态变量不同:全局静态变量使得该变量成为定义该变量的源文件所独享,即:全局静态变量对组成该程序的其它源文件是无效的。3、具有外部链接的静态;可以在所有源文件里调用;除了本文件,其他文件可以通过extern的方式引用;静态全局变量的作用:1、不必担心其它源文...转载 2018-12-31 13:05:15 · 6692 阅读 · 0 评论 -
JSON与XML的比较
XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。(1)用XML表示中国部分省市数据如下:<?xml version="1.0" encoding="utf-8" ?><country> <name>中国</name> <province> <name>黑龙转载 2019-01-07 13:30:26 · 580 阅读 · 0 评论 -
C语言中extern用法详解
文章来源:https://blog.youkuaiyun.com/weixin_40819954/article/details/79725588在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。1. extern修饰变量的声明。 举例来说,如果文件a.c需要引用b.c中变量int v,就可以在a.c中声明extern i...转载 2019-05-17 11:10:11 · 12202 阅读 · 2 评论 -
浅谈c/c++中register关键字
在早期c语言编译器不会对代码进行优化,因此使用register关键字修饰变量是很好的补充,大大提高的速度。register关键字请求让编译器将变量a直接放入寄存器里面,以提高读取速度,在C语言中register关键字修饰的变量不可以被取地址,但是c++中进行了优化。c++中依然支持register关键字,但是c++编译器也有自己的优化方式,即某些变量不用re...转载 2019-06-18 21:02:31 · 508 阅读 · 0 评论 -
C++之invalid initialization of non-const reference of type ‘int&’ from an rvalue of type ‘int
文章来源:https://blog.youkuaiyun.com/u011068702/article/details/64443949案例1:#include <iostream>#include <string>using namespace std;void PrintStr(std::string &str){ cout << st...转载 2019-06-19 14:11:31 · 1778 阅读 · 0 评论 -
C++中虚析构函数的作用及其原理分析
文章来源:https://blog.youkuaiyun.com/derkampf/article/details/62093252C++中的虚析构函数到底什么时候有用的,什么作用呢。一.虚析构函数的作用总的来说虚析构函数是为了避免内存泄露,而且是当子类中会有指针成员变量时才会使用得到的。也就说虚析构函数使得在删除指向子类对象的基类指针时可以调用子类的析构函数达到释放子类中堆内存的目的,而防止内存泄...转载 2019-06-19 16:03:45 · 245 阅读 · 0 评论 -
关于C/C++中的NULL
文章来源:https://www.cnblogs.com/yutongqing/p/6508327.html对于C/C++的开发者而言,早已习惯了使用NULL,这个用来表示空指针的宏。一直知道它是一个宏定义,其实质就是0,表示不指向任何内存地址的空指针,但却没做任何深入思考。这周由于工作需要在visual studio下做一段开发,在IDE下当我敲完NULL四个字母时,看到了nullptr...转载 2019-06-19 20:11:43 · 2806 阅读 · 0 评论 -
C++ explicit关键字详解
来源:https://www.cnblogs.com/rednodel/p/9299251.html首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢?...转载 2019-06-19 20:50:46 · 105 阅读 · 0 评论 -
智能指针(2)——share_ptr
1. 智能指针分3类:今天只唠唠shared_ptrshared_ptr unique_ptr weak_ptr2.下表是shared_ptr和unique_ptr都支持的操作操作 功能描述 shared_ptr<T> sp 空智能指针,可以指向类型为T的对象 unique_ptr<T> up 空智能指针,可以指向类型为T的对象 ...转载 2019-08-30 21:31:26 · 243 阅读 · 0 评论