只有2种成员 值成员; 指针成员; 依实现可分为raw pointer / shared_ptr; 现在,仅考虑第③种:资源对象共享 角度来考虑拷贝控制 类的两种语义:值语义、似指针 编译器提供的default版本的copy constructor/ copy assignment的语义: 1. 拷 ...
分类:
其他好文 时间:
2018-06-29 10:54:24
阅读次数:
172
1 PIMPL解释 PIMPL(Private Implementation 或 Pointer to Implementation)是通过一个私有的成员指针,将指针所指向的类的内部实现数据进行隐藏。 PIMPL(Private Implementation 或 Pointer to Impleme ...
分类:
编程语言 时间:
2018-06-18 22:15:09
阅读次数:
187
1) 除了类属关系运算符"."、成员指针运算符".*"、作用域运算符"::"、sizeof运算符和三目运算符"?:"以外,C++中的所有运算符都可以重载。 (2) 重载运算符限制在C++语言中已有的运算符范围内的允许重载的运算符之中,不能创建新的运算符。 (3) 运算符重载实质上是函数重载,因此编译 ...
分类:
编程语言 时间:
2018-03-30 21:40:06
阅读次数:
228
类模板std::function是一个多态函数封装器。std::function的实例能存储、复制及调用任何可调用(Callable) 目标——函数、 lambda表达式、 bind表达式或其他函数对象,还有指向成员函数指针和指向数据成员指针。(摘自http://zh.cppreference.co ...
分类:
其他好文 时间:
2018-01-26 15:45:40
阅读次数:
156
1、operator加运算符表示运算符重载,运算符就是函数名。 2、容器类的类都需要重载=、==和<等运算符,用于排序或者复制元素。 3、不能重载“.”,反引用类成员指针".*",作用域解析符"::",三元运算符“?:",sizeof(),typeid(),类型转换符static_cast<>, d ...
分类:
编程语言 时间:
2017-11-26 18:51:06
阅读次数:
148
1.当我们初始化一个成员指针或为成员指针赋值时,该指针并没有指向任何数据。成员指针指定了成员而非成员所属的对象,只有当解引用成员指针时,我们才提供对象信息。 2.和普通的函数指针类似,如果成员存在重载的问题,则我们必须显示地声明函数类型以明确指出我们想要使用的是哪个函数。和使用指向数据成员的指针一样 ...
分类:
编程语言 时间:
2017-09-02 15:39:25
阅读次数:
148
问题所在 1、局部指针变量没有被初始化 2、使用已经释放过后的指针 3、指针所指向的变量在指针之前被销毁 4、结构体成员指针未初始化, 没有为结构体指针分配足够的内存 ,内存越界(考虑使用柔性数组)和泄露 避免规则 1、用malloc申请了内存之后,应该立即检查指针值是否为NULL,防止使用值为N ...
分类:
编程语言 时间:
2017-08-20 12:30:20
阅读次数:
138
原文地址:http://goworldgs.com/?p=37 在C语言中有一个经典的宏定义,可以将结构体struct内部的某个成员的指针转化为结构体自身的指针。下面是一个例子,通过FIELD_OFFSET宏计算结构体内一个字段的偏移,函数getT可以从一个F*的指针获得对应的T*对象。 在Gola ...
分类:
其他好文 时间:
2017-07-30 14:49:03
阅读次数:
168
普通函数指针: "return_type (*ptr_name)(para_types) " 类成员函数指针: "return_type (class_name::*ptr_name)(para_types)" 类数据成员指针: "type class_name::* ptr_name"; C/C+ ...
分类:
编程语言 时间:
2017-07-29 16:48:45
阅读次数:
197
C++中不可重载的5个运算符 C++中的大部分运算符都是可以重载的,只有以下5个运算符不可以重载,他们是: 1 .(点运算符)通常用于去对象的成员,但是->(箭头运算符),是可以重载的 2 ::(域运算符)即类名+域运算符,取成员,不可以重载 3 .*(点星运算符,)不可以重载,成员指针运算符".* ...
分类:
编程语言 时间:
2017-05-06 22:54:47
阅读次数:
232