语言特性
文章平均质量分 66
杂质想当杂志
实践出真实.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
右值引用的显式定义后将退化为左值。
注意看代码里注释的报错,可以看出有左值引用将报错,等号右边确实是右值。其次,将左值赋给右值类型也会报错。类型 && 变量名 = 右值。原创 2022-08-16 19:13:52 · 532 阅读 · 0 评论 -
(转载)cin、cin.get()、cin.getline()、getline()的区别
由于cin在遇到空格/tab时,就会停止读取,所以如果我在第一次输入时,利用空格隔开两个字符串,那么cin在第一次取的时候,只会读取前一个字符串,到空格结束,此时缓冲区还保留着前面输入的第二个字符串,那么第二次cin就会直接从缓冲区取残留数据,而不会请求输入。其实该函数最常用的方式是这样的,将第一个参数设的非常大,将第二个参数设为'\n',这样就可以缓冲区中回车符中的所有残留数据,因为一般情况下前面输入残留的数据是没有用的,所以在进行新一次输入操作前将缓冲区中所有数据清空是比较合理。...转载 2022-07-22 14:49:39 · 1087 阅读 · 0 评论 -
c++static用法详解与为什么非const静态变量要在类外定义的原因分析
c++static用法详解内容来自于这篇博文,写的很不错,为方便学习static关键字的用法,我复制过来了。后面的为什么非const静态变量要在类外定义的原因分析则是自己增加的内容。static关键字在c语言中比较常用,使用恰当能够大大提高程序的模块化特性,有利于扩展和维护。 但是对于c语言初学者,static由于使用灵活,并不容易掌握。本文就static在c语言中的应用进行总结,供参考使用。错漏之处,请不吝指正。 最后一节加入了c++面向对象中static的使用特性,当作拓展阅...原创 2022-05-01 15:11:12 · 2743 阅读 · 0 评论 -
(转载)c++的常量折叠与const常量
一,前言 有关C++语言的const常量的考察点:肯定是const常量的内存不是分配在read-only的存储区的,const常量的内存分配区是很普通的栈或者全局区域。也就是说const常量只是编译器在编译的时候做检查,根本不存在什么read-only的区域。 所以说C++的const常量和常量字符串是不同的,常量字符串是存储在read-only的区域的,他们的具体的存储区域是不同的。 二,常量折叠 1,举...转载 2022-04-30 09:46:00 · 266 阅读 · 0 评论 -
(转载)为什么 C++ 有指针了还要引用?
今天师弟问我,引用的底层也是指针实现的,内置类型指针传递和引用传递的汇编代码是一样的,那C++为什么还需要引入引用呢? 好吧,仔细想了下,这确实是个好问题。 引用传递,只是明面上,没有使用值传递,值传递本身是不可避免的。 编译器,暗地里通过指针(或者其他可以替代指针的数据类型)的值传递,替换了引用传递。 所以引用传递,实质上是地址传递,别名这东西只是概念,是一种抽象,别名是没法传递的。 别名,可不是真实的数据类型。 因为,函数传递参数需要,数据复制,所以明的暗的值传递,不可避免。 引用的高效,在于对大的数据转载 2022-04-28 15:24:16 · 987 阅读 · 0 评论 -
c++:全局变量、静态变量的静态初始化与动态初始化
参考:https://www.cnblogs.com/dylan-liang/p/14407237.htmlhttps://www.cnblogs.com/fushi/p/7631359.html原创 2022-04-26 14:35:09 · 1111 阅读 · 0 评论 -
(转载)实例说明代码段(.text)、数据段(.data)、bss段、只读数据段(.rodata)、堆栈的划分依据
目录 程序实例介绍各个段内容、分析段(segment)分布分析代码段(.text)、数据段(.data)、bss段、只读数据段(.rodata)划分依据 程序实例介绍各个段内容、分析段(segment)分布 先举个小例子说明,让大家有个表面的印象。 下面的程序定义了...转载 2022-04-26 14:09:32 · 1563 阅读 · 0 评论 -
C++ typeid(*).name()对指针的返回值与指针用法介绍
#include <iostream>#include <typeinfo>using namespace std;int main() { int*(*pp())[3]; int**(*PPP)[3]; double (*FuncPtr)(float); void(Func)(int, float); cout << typeid(pp).name() << endl; cout << type原创 2022-04-20 15:18:41 · 1730 阅读 · 0 评论 -
C++类对象模型之内存布局
1、C++类对象的内存布局 在C++的类对象中,有两种类的成员变量:static和非static,有三种成员函数:static、非static和virtual。那么,它们在C++的内存中是如何分布的呢? C++程序的内存格局通常分为四个区:全局数据区(data area),代码区(code area),栈区(stack ...转载 2022-04-18 20:47:29 · 1443 阅读 · 1 评论 -
C++11:Default和Delete
目录 引子 默认构造函数 析构函数 默认拷贝构造函数 默认拷贝赋值运算 默认移动构造函数 默认移动赋值函数 default delete C++11之前 C++11实现 引子 default和delete是C++11新添加的关键字,依靠这两个关键字C++编译器可以控制函数的默认生成和删除,这是对C++98标准的很大升级。这儿需要说明的是default仅仅可以控制类的特殊成...转载 2022-03-23 15:54:11 · 1963 阅读 · 0 评论 -
C++前置++和后置++的区别
今天在阅读《google c++ 编程风格》的文档的时候,5.10. 前置自增和自减:有一句话引起了我的注意: 对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.,理由是 前置自增 (++i) 通常要比后置自增 (i++) 效率更高。于是我查了查前置++和后置++的区别。 注意:《more effe...转载 2022-03-21 17:15:14 · 5047 阅读 · 3 评论 -
C++ 值传递、指针传递、引用传递详解
而关于值传递,指针传递,引用传递这几个方面还会存在误区, 所有我觉的有必要在这里也说明一下~下文会通过例子详细说明哦值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。指针传递:形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作引用传递:形参相当于是实参的“别名”,对形参的操作其实就是对实参的操作,在转载 2022-03-19 00:05:40 · 621 阅读 · 0 评论 -
智能指针、单例、多线程三者综合应用+智能指针源码分析
查看文章:https://mp.weixin.qq.com/s/b_xlJF1-Cplgs-uawWuUow转载 2022-03-17 22:40:13 · 156 阅读 · 0 评论 -
利用lambda实现set的自定义排序准则的局限
自定义例子:#include #include #include #include using namespace std;int main(){auto cmp = [](const string& s1, const string& s2) {return s1[0] < s2[0];};set<string, decltype(cmp)> s(cmp);s.insert({“as”, “bs”, “AA”});for (auto&..原创 2022-03-06 12:57:24 · 454 阅读 · 0 评论 -
std::move与std::forward用于模板函数时,模板参数<T && a>中的参数a退化成左值的探讨
std::move与std::forward的一些知识参考文章里的说法:要认识它的作用,需要知道C++中的几条规则:(这里有篇挺好的文章:http://blog.youkuaiyun.com/zwvista/article/details/6848582,但似乎因标准的更新,其中的规则已不完全成立了)1.引用折叠规则:X& + & => X&X&& + & => X&X& + && => X&X&am原创 2022-02-26 18:36:30 · 432 阅读 · 0 评论 -
解决undefined reference to symbol ‘ceil@@GLIBC_2.2.5这类问题的方法
#include <unordered_map>#include <string>#include <iostream>using namespace std;int main(){ unordered_map<string,double> coll { { "tim", 9.9 }, { "struppi", 11.77 }原创 2022-01-21 22:34:32 · 5806 阅读 · 1 评论 -
C++标准库学习笔记——标准模板库笔记
目录1. STL组件2. 容器2.1 容器分类2.2 三种容器实现原理2.3 关联式容器的小知识点2.4 容器适配器3. 迭代器3.1 迭代器概念与基本操作3.2 迭代器的半开区间性质3.3 迭代器的小知识点3.4 迭代器种类4. 算法4.1 算法的处理区间1. STL组件由容器、迭代器、算法三部分组成。2. 容器2.1 容器分类分为三类,且每一种包含的类型皆在下图中显示:2.2 三种容器实现原理2.3 关联式容器的小知识点可以认为是“索引是任意类型”的数组。关联式容器会自动排序元原创 2022-01-21 22:24:14 · 517 阅读 · 0 评论 -
(转载)decltype和declval的用法
1. decltype是c++11以后出现的一个新的关键字,是用来萃取表达式或者变量或者函数返回值的类型的。 具体用法可以参考官网:https://en.cppreference.com/w/cpp/language/decltype 2. declval是c++11中的一个模板函数,原型如下: 具体用法可以参考官网:https://zh.cppreference.com/w/cpp/utility/decl...转载 2022-01-16 13:58:07 · 287 阅读 · 0 评论 -
(转载)c++中typename、typedef以及using关键字用法
原文地址:https://blog.youkuaiyun.com/e21105834/article/details/117509758在c++的标准库中,因为类继承关系比较复杂和模板使用比较多的原因,源代码中充斥着typename、typedef和using这三个关键字,所以在继续剖析标准库源码之前,今天就来介绍一下这三个关键字的作用。一、typename关键字 typename的第一个作用是用作模板里面,来声明某种类型,比如这样的: template<typename _Tp, typename _A转载 2022-01-16 12:05:33 · 407 阅读 · 0 评论
分享