C++ Primer
FBI-PC
这个作者很懒,什么都没留下…
展开
-
智能指针
本内容摘自C++ primer,加上自己的理解。 包含指针的类需要特别注意复制控制,原因是复制指针时只复制指针中的地址,而不会复制指针指向的对象。大多数C++类采用一下三种方法之一管理指针成员。 1)指针成员采取常规指针型行为,这样的类指针的所有缺陷但无需特殊的复制控制。 2)类可以实现所谓的“智能指针”行为。指针所指向的对象是共享的,但类能够防止悬垂指针。 3)类采取值型行为。指针所指向的原创 2017-12-19 22:43:55 · 185 阅读 · 0 评论 -
for_each一探
最近在看到for_each的时候我就挺好奇的,这个东西到底怎么实现的,然后我就配合仿函数实现了一个小例子。#include "stdafx.h"#include<iostream>#include<vector>#include<stack>#include<map>#include<memory>#include<c..原创 2018-11-05 10:42:07 · 1331 阅读 · 0 评论 -
C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast
转发自:这个作者c强制转换与c++强制转换c语言强制类型转换主要用于基础的数据类型间的转换,语法为:(type-id)expression//转换格式1type-id(expression)//转换格式2c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,...转载 2018-08-29 10:57:28 · 113 阅读 · 0 评论 -
一道关于虚函数表的题目
转载自: https://blog.csdn.net/shanghairuoxiao/article/details/77341126 之前看过了陈皓大神关于虚函数表的博客,感觉对多态和虚函数表理解又清楚了一些,但是前不久喷到一道网易的笔试题,主要考察的也是对虚函数的理解,当时在某些地方又纠结了一下,自己写一段代码来验证,加深理解。网易的原题和下面的代码可能不一样,记不太清了。根据自己的理解写...转载 2018-08-22 17:23:54 · 268 阅读 · 0 评论 -
虚函数的实现原理
转载自 这个大神概述简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。例: 其中: B的虚函数表中存放着B::foo和B::bar两个函数指针。 D的虚函数表中存放的既有继承自B的虚函数B::foo,又有重写(override)了基类虚函数B::bar的D::bar,还有新增的...转载 2018-08-03 10:35:20 · 197 阅读 · 0 评论 -
条款06:若不想使用编译器自动生成的函数,就该明确拒绝,以及C++11在这方面的新标准
在新编准发布以前,类是通过将其拷贝构造函数和拷贝赋值运算符声明为private来阻止的。例如,在房产中介看来,每个房子都是独一无二的,所以不允许复制和拷贝。那么可能会想,如果不希望class支持某一个特定机能,只要不申明对应函数就行,但是这个策略对copy构造函数和copy assignment操作符却不起作用,因为对于这几类函数,如果你不申明他们,当调用的时候,编译器会默认的为你们申明他...原创 2018-07-30 21:55:44 · 137 阅读 · 0 评论 -
二维vector的两种初始化方式
二维vector的两种初始化方式第一种一行直接申明vector<vector<char> >vec(row,vector<char>(col,'#'));这里的row,col代表二维vector的两个轴方向的大小第二种方式vector<vector<char> >vec1;vec1.resize(row);...原创 2018-05-16 13:23:04 · 12001 阅读 · 0 评论 -
C++的顶层const和底层const的理解
转发来自:https://blog.csdn.net/qq_19528953/article/details/50922303#t0最近,又一次翻开C++primer,决定仔细研究一下自己以前没搞懂的顶层const和底层const,这次看了后感觉明白了,所以记录下来,以后可以没事翻阅,增加记忆。首先,const是一个限定符,被它修饰的变量的值不能改变。对于一般的变量来说,其实没有顶层const...转载 2018-05-21 20:42:54 · 270 阅读 · 0 评论 -
构造函数之无参构造函数
首先看一段代码:#include<iostream>using namespace std;struct Foo{ Foo() {} Foo(int) {} void fun(){}};int main(){ Foo a(10); a.fun(); Foo b(); b.fun(); return...原创 2018-05-14 14:50:11 · 3455 阅读 · 0 评论 -
protected成员解密(后续进行更新)
protected为受保护的访问标号,protected成员可以被该类的成员、友元和派生类成员(非友元)访问,而不可以被该类型的普通用户访问。首先解释不可以被该类型的普通用户访问。看一段代码:#include<iostream>using namespace std;class A{ public: A(int aa,int bb):_a(a...原创 2018-04-23 20:34:40 · 319 阅读 · 0 评论 -
动态内存管理类
首先打个广告,对C++后台这一块感兴趣的可以加QQ群大家可以相互学习,有问题大家也可以相互讨论,加群号码745354447。看C++Primer看到这里的时候心里有点熟悉,因为最近也在看STL源码剖析,觉得和内存分配那一章很吻合,所以看起来很轻松,这里主要是举了一个例子实现vector的一个string的特例。我觉得首先得从逻辑上梳理一下, 1:这里首先申明了一个构造函数,都用空指针去代...原创 2018-04-08 21:06:12 · 245 阅读 · 0 评论 -
从一例子解析合成拷贝构造函数和拷贝构造函数
1:假定numbered是一个类,它有一个默认构造函数,能为每个对象生成一个唯一的序号,保存在名为mysn的数据成员中。假定numbered使用合成的拷贝构造函数成员,并给出如下函数:void f(numbered s) { cout<<s.mysn<<endl; }则下面代码输出什么内容? numbered a,b = a, c = b; f(a); f(b)...原创 2018-03-30 20:30:48 · 2261 阅读 · 1 评论 -
C++顶层const和底层const详解
定义顶层const:用来标明一个变量其本身是一个不可更改的常量底层const:用来标明一个指针或引用所指向的对象是一个不可更改常量使用执行拷贝操作时,顶层const对于拷贝操作无影响const int i = 1;int m = i;//i具有顶层const对于拷贝操作无影响。但是底层const不可忽略。执行拷贝操作时,拷入与拷出对象必须具有相同的底层const,或者两对象的数据类...原创 2019-03-25 15:47:11 · 900 阅读 · 0 评论