c++
文章平均质量分 65
一个字节
dare try
展开
-
类和继承
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能。这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。原创 2017-04-06 17:54:52 · 387 阅读 · 0 评论 -
explicit关键字
explicit关键字用来修饰类的构造函数,表明构造函数是显示的,相对的是implicit关键字。首先这个关键字只能用在类内部的构造函数声明上,而不能用在类外部的函数定义上,它的作用是不能进行隐式转换。复制代码 代码如下: class gxgExplicit //没有关键字explicit的类 { public: int _size; gxg转载 2017-08-27 09:04:02 · 230 阅读 · 0 评论 -
复习RAII(智能指针)
一、什么是RAIIRAII是Resource Acquisition Is Initialization的简称,是C++语言的一种管理资源、避免泄漏的惯用法。RAII又叫做资源分配即初始化,即:定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理,可以保证资源的正确初始化和释放。二、为什么要使用在计算机系统中,资源是数量有限且对系统正常运行具有一定作用的原创 2017-08-27 12:14:13 · 818 阅读 · 0 评论 -
综合面试题整理(上)
1、实现一个单利模式,要求线程安全//单例模式:一般用于日志模块,构造一个日志模块的全局变量在任何地方都可以使用//保证一个类只有一个实例,并提供一个访问它的全局访问点(定义一个static函数)//解决项目中全局变量会造成的不安全问题,不符合面向对象的封装原则问题//考虑线程安全问题,性能问题#include <iostream>using namespace std;class Si原创 2017-08-27 16:58:52 · 659 阅读 · 0 评论 -
综合面试题(下)
10.C++中包含哪几种强制类型转换?他们有什么区别和联系 reinterpret_cast: 转换一个指针为其它类型的指针。它也允许从一个指针转换为整数类型,反之亦 然. 这个操作符能够在非相关的类型之间转换. 操作结果只是简单的从一个指针到别的指针的值的 二进制拷贝. 在类型之间指向的内容不做任何类型的检查和转换? class A{}; class B{}; A* a = new A;B*原创 2017-08-27 18:19:25 · 236 阅读 · 0 评论 -
广联达线下笔试题
1:给一个词典,找出其中所有最长的单词。 样例 在词典 { “dog”, “google”, “facebook”, “internationalization”, “blabla” } 中, 最长的单词集合为 [“internationalization”] 在词典 { “like”, “love”, “hate”, “yes”原创 2017-09-07 01:55:39 · 2853 阅读 · 0 评论 -
C++关键字mutable和volatile
mutable和volatile 很少遇到这两个关键字,学嵌入式估计知道后者,深入研究 C++ 的估计知道前者。 (1)mutable 在 C++ 中,mutable 是为了突破 const 的限制而设置的。被 mutable 修饰的变量,将永远处于可变的状态,即使在一个 const 函数中,甚至结构体变量或者类对象为 const,其 mutable 成员也可以被修转载 2017-08-29 16:56:26 · 371 阅读 · 0 评论 -
常见的STL容器及其使用场景
STL的容器代表着C++的数据结构STL的容器可以分为以下几个大类:一:序列容器, 有vector, list, deque, string.二 : 关联容器, 有set, multiset, map,multimap,( hash_set, hash_map, hash_multiset, hash_multimap)原创 2017-08-31 12:01:26 · 1752 阅读 · 0 评论 -
程序设计原则
程序设计原则(总结) 结构化程序设计的主要原则1、自顶向下 程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。2、逐步求精 对复杂问题,应设计一些子目标作为过渡,逐步细化。3、模块化 一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目转载 2017-09-09 22:39:49 · 859 阅读 · 0 评论 -
复习继承和多态
C++面向对象程序设计的核心思想是封装(数据抽象)、继承和多态(动态绑定)。通过数据抽象,我们可以将类的接口与实现分离,可以将数据和方法封装在一起;使用继承,可以定义相似的类型并对其相似关系建模,以及虚函数的重写;使用动态绑定,可以在一定程度上忽略相似类型的区别,而用同一方式使用它们的对象;继承和多态是为了代码的复用,和形成多种形态,以实现多种功能。一、继承1、概念:为了代码的重用,保留基类的原原创 2017-08-27 01:38:02 · 320 阅读 · 0 评论 -
C++11 auto类型说明符如for(atuo &x : s)
for(qtuo &x : S)原创 2017-08-19 21:34:35 · 18628 阅读 · 0 评论 -
实现简易数据连接池
为什么要使用连接池? 使用数据库连接池可以节省系统的许多的开销,频繁的操作数据库是一个很耗费资源的行为,网站的响应的速度也会下降,严重的时候可能导致服务器崩溃,因此使用数据库连接池势在必行。原创 2017-08-11 14:01:23 · 265 阅读 · 0 评论 -
c++之智能指针
什么是智能指针呢? 智能指针(smart pointer)是存储指向动态分配(堆)对象指针的类,用于生存期控制,能够确保自动正确的销毁动态分配的对象,防止内存泄露。它的一种通用实现技术是使用引用计数(reference count)。 智能指针是RAII的一种应用! RAII,也称为“资源获取就是初始化”,是c++等编程语言常用的管理资源、避免内存泄露的方法。原创 2017-05-17 13:54:48 · 360 阅读 · 0 评论 -
c++异常处理
什么是异常处理? 异常处理就是处理程序中的错误。 c异常处理方式(传统错误处理方式): 1:终止程序 2:返回一个表示错误的值,附加错误码(GetLastError()) 3:返回一个合法值,让程序处于某种非法的状态(坑爹的atoi()) 4 : 调用一个预先准备好在出现“错误”的情况下用的函数(回调函数) 5:暴力解决方式: abort() 或者exit() 6 :使用goto语句原创 2017-05-17 20:49:15 · 526 阅读 · 0 评论 -
设计类不能被继承 、只能在堆上创建对象、只能在栈上创建对象。
不能被继承的类:私有的构造函数只能在堆上创建对象的类:利用函数创建对象,销毁对象只能在栈上创建对象的类:私有的operator new 和 operator delete原创 2017-07-17 00:53:21 · 280 阅读 · 0 评论 -
C和C++中动态内存管理与内存泄漏剖析
c语言c语言中使用malloc/calloc/realloc/free函数进行动态内存管理。malloc/calloc/realloc用来在堆上开辟空间,free将申请的空间释放掉! c++使用new和delete操作符来分配和释放空间。原创 2017-03-27 17:00:15 · 382 阅读 · 0 评论 -
this指针的深度剖析
定义:this本身是一个指针,它时时刻刻指向一个类的实例(对象)。 使用:this指针作为类成员函数的一个默认隐含参数,由编译器自动维护传递。 确定参数类成员函数调用约定为:_thiscall不确定参数类成员函数调用约定为:_cdecl原创 2017-03-12 13:48:22 · 540 阅读 · 0 评论 -
面向对象语言和多态
什么是多态呢? 字面意思就是同一事物有多种形态。 在面向对象程序设计中,多态指的是接口的多种不同的实现方式。编程其实就是一个将具体世界进行抽象化的过程,多态就是抽象化的一种体现,把一系列具体事物的共同点抽象出来, 再通过这个抽象的事物, 与不同的具体事物进行对话。原创 2017-04-13 23:27:57 · 477 阅读 · 0 评论 -
使用两个栈实现一个队列+使用两个队列实现一个栈
使用两个栈实现一个队列始终维护s1作为存储空间,以s2作为临时缓冲区。 入队时,将元素压入s1。 出队时,将s1的元素逐个“倒入”(弹出并压入)s2,将s2的顶元素弹出作为出队元素,之后再将s2剩下的元素逐个“倒回”s1。原创 2017-07-19 01:02:28 · 263 阅读 · 0 评论 -
c++中四种类型转换
1.static_cast 2.const_cast 3.dynamic_cast 4.reinterpret_cast.原创 2017-08-03 15:19:22 · 229 阅读 · 0 评论 -
什么时候需要用到初始化列表
初始化列表用于对类的数据成员进行初始化。成员列表在构造函数中进行初始化,跟在构造函数的冒号后面。参考下面例子:[cpp] view plain copy print?#include<iostream> class Point { private: int x; int y; public: Point(int i = 0, int j = 0):x(i转载 2017-09-11 10:40:06 · 2518 阅读 · 1 评论