
C++
溯流而上
过去与未来只是一个概念,只有当下是最真实的。
展开
-
若不想使用编译器自动生成的函数,就该明确拒绝
作为类设计者,如果你明确知道你的类是独一无二的,通过copy创建对象可能是一种错误的行为,应该被拒绝。但是,提供默认的拷贝构造和拷贝赋值是编译器的行为,我们应该通过什么方式告诉编译器不要提供默认的拷贝呢?...原创 2022-07-20 07:53:56 · 638 阅读 · 0 评论 -
c++ 默默编写并调用了哪些函数:构造、析构、拷贝构造、赋值
如果你写下classEmpty{};这样的一个空的class,编译器将帮我们加上默认的构造、析构、拷贝构造和赋值函数。拷贝构造和拷贝赋值操作符,编译器创建的版本只是单纯地将来源对象的每一个non-static成员变量拷贝到目标对象。拷贝方式对于有自己的拷贝构造(或拷贝赋值)函数的成员,调用其拷贝构造(或拷贝赋值)。default构造和析构主要来做调用基类和非静态成员的构造和析构。在这些函数需要被调用时候,编译器会将它们创建出来。在这三种情况下,编译器无法生成默认的拷贝赋值函数。...原创 2022-07-18 06:25:47 · 411 阅读 · 0 评论 -
c++11 std::function 函数包装器 用法( 参考书 《深入应用c++11》)
std//装入一个普通函数stdfoo_func;//装入一个类的静态函数Barbar;fr2=bar;//Bar是一个仿函数对象,fr2装入一个仿函数对象就像它的名字函数包装器一样,它就像一个统一样式的包装袋,把各种不同的函数对象放进去后,方便统一的保存和调用。因此,在书中,将这个功能放到了“使用c++11让程序更简洁、更现代”来介绍。stdfunction是一个类模板,可以容纳除了类成员(函数)指针之外的所有可调用对象。.........原创 2022-07-15 14:56:01 · 443 阅读 · 0 评论 -
c++11 lambda表达式 和 Qt槽函数
lambda表达式是c++ 11的重要且常用特性。使用lambda表达式有诸多好处:1.就地匿名定义目标函数或函数对象,在关注函数实现的场景下不用费力气给函数起名和在别处定义,具有很好的可读性和可维护性;2.简洁,让使用者聚焦于解决核心问题;3.实现功能闭包。格式[capture] {params} opt-> ret { body;};如果返回值可以推导获得,可省略,没有参数,()也可省略,最简单的格式[capture]{body};例子:auto f = [](int a) ->int { return原创 2022-07-13 20:07:09 · 556 阅读 · 0 评论 -
C++ 中的static关键字使用场景
(1)函数体内作用范围为该函数体,该变量内存只被分配一次,具有记忆能力(内存分配在静态区,在第一次调用的时候分配内存,函数调用结束内存并不释放)(2)在模块内的static全局变量可以被模块内所有函数访问,但不能被模块外其它函数访问;(模块,{}括起来的语句块都是,不同的文件也是不同的模块)(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模...转载 2018-08-25 07:33:19 · 2812 阅读 · 0 评论 -
C++迭代器(Iterator)详解
原文作者:https://blog.youkuaiyun.com/优快云_564174144/article/details/76231626 迭代器(Iterator)的介绍 背景:指针可以用来遍历存储空间连续的数据结构,但是对于存储空间费连续的,就需要寻找一个行为类似指针的类,来对非数组的数据结构进行遍历。定义:迭代器是一种检查容器内元素并遍历元素的数据类型。迭代器提供对一个容器中的对...转载 2018-08-28 22:49:01 · 28529 阅读 · 3 评论 -
C语言中的void和void*的定义及用法
voidvoid最常见的用法,就是在函数中限定函数的参数和返回值的 void draw(void); 表明函数draw没有参数也没有返回值,void在别的的地方的应用我也没见过;实际上,如果把void 和int,char,double等类型放到一起理解的话,首先还是那句揭示本质的话:变量类型就是固定大小内存块的别名,那么void占用多大内存呢,编译器并没有定义void占用多大内存,所以对于...原创 2018-08-11 09:54:46 · 23191 阅读 · 0 评论 -
c语言强制类型转换
例子:#include <stdio.h>{ char cChar; //字符型变量 short int iShort; //短整型变量 int ilnt; //整形变量 float fFloat=70000; //单精度浮点型 cChar=(char)fFloat; //强制转换赋值...原创 2018-08-10 22:20:47 · 6612 阅读 · 0 评论 -
C++引用做函数参数和函数的返回值是引用的几种情况
引用做函数参数引用的内部实现,是常指针,所以引用其实是对指针做了一些限制,这种限制的意义是在某些应用场景中,使用引用具有更好的 实用性和可读性。具体讲,引用最常见的用处是在做函数参数的时候,对比指针做函数参数,比如:指针做函数参数:void myswap(int *a,int *b){ int tmp=*a; *a=*b; *b=tmp;}引用做函数参数:void myswap(int ...原创 2018-05-15 16:36:56 · 809 阅读 · 0 评论 -
二级指针、多级指针和二维数组内存模型等问题探究
void main(){ int i = 0; //指针数组,是一个数组,数组中的元素都是指针 char * p1[] = {"123", "456", "789"}; /*相当于 char *tmpp1="123"; char *tmpp2="456"; char *tmpp3="789"; c原创 2018-05-10 14:55:56 · 271 阅读 · 0 评论 -
C语言 数组做函数参数
看下面代码:int main(){ int a[5]={3,6,4,2,5}; char *ptrChar="hello world";//ptrChar是char类型的指针,指向内存空间 int *ptrInt=a;//ptrInt是指向int类型的指针 printf("sizeof(char):%d\n",sizeof(char)); printf("sizeof(int):%d...原创 2018-04-25 00:20:51 · 17955 阅读 · 0 评论 -
C++函数重载
我之前学习c++,主要的学习方法是看教学视频,视频里讲的,听了之后就明白了,也会跟着一步步敲代码,也能照着例子敲一些练习题,敲完之后感觉自己懂了,但是实际上,那只是自以为是而已,其实自己懂的,只是皮毛中的毛,要想正真地理解,需要结合自己知道的信息,进行深入思考,不仅知其然,更要知其所以然。 记起来之前一个老师说的,学习c++,要站在开发c++的那帮大牛们的角度去思考问题。...原创 2018-04-18 13:28:53 · 254 阅读 · 0 评论 -
c++ const限定符总结
我看的书是《c++ primer 第五版》,在书的第二章第四节(p53)专门讲了const限定符相关知识,学习之后在此做一个总结:const限定谁,谁就是只读而不能被改变的 。这是我看了书上相关细小的知识点后总结的一句,然后再根据书上的内容去解读和验证一下。const int bufSize=512;//输入缓冲区大小一个变量代表着一个内存空间,变量名是这块内存空间的标号,const就像一把锁,把...原创 2018-04-19 14:27:11 · 348 阅读 · 0 评论