c++
文章平均质量分 58
C++
liu_jie_bin
技术栈: c++ pyhton Qt opencv halcon
展开
-
[C++11]explicit关键字的作用
explicit关键字用来修饰构造函数,防止其被隐式转换。先来看看隐式类型转换是怎么发生的class Cirle{public: Cirle(double f) {radius = f;}private: double radius;};Cirle c1 = 20; //隐式调用其构造函数,成功我们定义了一个带有一个参数的Circle类, 当定义一个Circle对象, 使用值操作符=赋值时,隐式调用了构造函数, 使得程序能够编译通过。这或许可以带来便利, 而有时却会带来原创 2022-09-03 10:25:15 · 494 阅读 · 0 评论 -
[c++11] using用法
为什么要引入usingusing和typedef的作用都是为了,定义类型别名。既然有typedef了,为什么还要引入using呢?答案:为了弥补typedef的不足。using 的别名语法也覆盖了 typedef 的全部功能,C+11标准鼓励用using,因为using比较直观。using比typedef直观// 重定义unsigned char typedef unsigned char ty_uchar; using ty_uchar = unsigned char;//原创 2022-05-05 22:47:38 · 1014 阅读 · 0 评论 -
[c++11]decltype关键字讲解
文章目录🍺既然有auto了,为什么又要有decltype呢?👍需要某个表达式的返回值类型而又不想实际执行它时👍模板函数返回值依赖模板参数的变量类型👍类型推导时不想忽略引用和顶层const修饰🍺既然有auto了,为什么又要有decltype呢?auto 和decltype关键字都是用于自动类型推断,既然有auto了,为什么还要引出decltype呢,同样是为了解决前者无法满足的使用场景。首先看一下两者的用法上的区别。 int iValue = 10; auto auto_i = iVal原创 2022-05-02 11:08:29 · 432 阅读 · 1 评论 -
[C++11] auto关键字详解
为什么引入auto关键字在一些高级语言中,比如 C#、Python 等,程序员在定义变量时可以不指明具体的类型,而是让编译器(或者解释器)自己去推导,让代码的编写更加方便。C++11为了支持自动类型推导了,引入了auto 关键字。 auto str = "csdn"; //自动类型推断,str为 char const * auto fValue = 100.0;//自动类型推断,fValue为double auto auto_iValue = fValue;//自动类型推断,au原创 2022-04-27 22:25:13 · 2473 阅读 · 0 评论 -
sizeof操作符使用讲解
文章目录🌳 概念🌳 用于内置数据类型🌳 用于变量🌳 用于函数🌳 用于指针🌳 用于数组🌳 用于联合体🌳 用于自定义结构体🌳 用于自定义类型🌳 概念sizeof是C/C++中的一个操作符(operator),如C语言的其他操作符++、–等。它并不是函数。简单的说其作用就是返回一个表达式或括在括号内的类型名所占的字节大小。注:以下在64位平台上测试🌳 用于内置数据类型 cout << "sizeof(char):" <<sizeof(char)<< endl;原创 2022-03-24 21:30:38 · 1388 阅读 · 0 评论 -
c++实现一个简单的智能指针(共享指针)
文章目录实现过程1.指针计数类2.共享指针模板类测试实现过程1.指针计数类class PtrCounter{public: PtrCounter(): count{1} {} void add(){++count;} void subtract(){--count;} int get() const{return count;}private: std::atomic<int> count;};STL提供的共享指针基于引用计数原创 2022-03-17 21:13:16 · 4923 阅读 · 2 评论 -
在模板类或者模板函数声明模板参数的内嵌类型时,编译器报错(typename关键字的作用之一)
项目场景:在模板编程中,会有这样一种情景。假设在一个模板类中,想申明模板参数的内嵌类型,代码如下: template<typename T> struct MyStruct { T::EmbedType value; };编译器报错: 原因分析:编译器无法推断“EmbedType”:是数据类型。解决方案:在申明变量前面添加typename关键字,成功编译,代码如下: template<typename T> struct MyStruct {原创 2022-02-27 23:24:11 · 424 阅读 · 0 评论 -
指针传参VS引用传参VS值传参
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、指针和引用区别二、对于不修改传入参数的函数三、对于修改传入参数的函数前言大家是否也曾经遇到过这样的困境,在调用其他人的api时,不管是传值,传引用,传指针,我们都用的很溜,可自己在造api时,却陷入了此处应该采取指针传参数,值传参还是用引用?这种抉择不定的困境。一、指针和引用区别指针:指针也是一个变量,存放的是其他变量的地址,所以指针访问一个变量是间接访问。指针是一个实体,需要分配内存空间。指针在定义的时候不一原创 2021-08-30 17:09:21 · 667 阅读 · 0 评论 -
memset()函数使用详解
文章目录一、memset函数原型二、使用步骤1.加入头文件和命名空间2.数组初始化3.自定义类初始化一、memset函数原型void *memset(void *src, int value, size_t n);这里srs可以是数组名,也可以是指向某一内存空间的指针;value为要填充的值;n为要填充的字节数,通常为sizeof(s);函数的功能:将指针变量 src 所指向的前 n 字节的内存单元用一个“整数” value 替换,注意 value是 int 型。s 是 void* 型的指针原创 2021-08-30 11:13:15 · 6475 阅读 · 0 评论