随笔分类 -  C++

摘要:new operator/delete operator就是new和delete操作符,而operator new/operator delete是函数。 new operator(1)调用operator new分配足够的空间,并调用相关对象的构造函数(2)不可以被重载 operator new( 阅读全文
posted @ 2017-09-07 22:01 actually96 阅读(212) 评论(0) 推荐(0) 编辑
摘要:struct Employee { ... }; struct Manager : Employee { ... }; struct Worker : Employee { ... }; struct MiddleManager : Manager, Worker { ... };如果经理类和工人类都继承自雇员类,很自然地,它们每个类都会从雇员类获得一份数据拷贝。如果不作特殊处理,一线经理类的实例... 阅读全文
posted @ 2017-09-04 16:37 actually96 阅读(320) 评论(0) 推荐(0) 编辑
摘要:1.为什么基类的析构函数是虚函数? 在实现多态时,当用基类操作派生类,在析构时防止只析构基类而不析构派生类的状况发生。 下面转自网络:源地址 http://blog.sina.com.cn/s/blog_7c773cc50100y9hz.html a.第一段代码 #include using namespace std; class ClxBase{ public: ClxBase... 阅读全文
posted @ 2017-09-04 16:14 actually96 阅读(884) 评论(0) 推荐(0) 编辑
摘要:<!--more--> 注意:派生类是基类对象,反之不成立 在一定条件下,不同类型的数据之间可以进行类型转换,如可以将整型数据赋给双精度型变量。在赋值之前,先把整型数据转换成双精度型数据,然后再把它赋给双精度型变量。这种不同类型数据之间的自动转换和赋值,称为赋值兼容。在基类和派生类对象之间也存有赋值 阅读全文
posted @ 2017-09-04 16:13 actually96 阅读(2433) 评论(1) 推荐(1) 编辑
摘要:C++中常量成员函数的含义 <!--more--> 本文内容来源:《C++必知必会》 使用常量成员函数可以改变对象的逻辑状态,虽然对象的物理状态没有发生改变。考虑如下代码,它定义了一个类X: class X{ public: X():buffer_(0),isComputed_(false){} / 阅读全文
posted @ 2017-09-04 14:51 actually96 阅读(782) 评论(0) 推荐(0) 编辑
摘要:写时拷贝技术是通过"引用计数"实现的,在分配空间的时候多分配4个字节,用来记录有多少个指针指向块空间,当有新的指针指向这块空间时,引用计数加一,当要释放这块空间时,引用计数减一(假装释放),直到引用计数减为0时才真的释放掉这块空间。当有的指针要改变这块空间的值时,再为这个指针分配自己的空间(注意这时 阅读全文
posted @ 2017-09-04 12:48 actually96 阅读(405) 评论(0) 推荐(0) 编辑
摘要:1. const char* 和string 转换(1) const char*转换为 string,直接赋值即可。 EX: const char* tmp = "tsinghua". string s = tmp;(2) string转换为const char*,利用c_str() EX: string s = "tsinghua"; c... 阅读全文
posted @ 2017-09-04 12:47 actually96 阅读(703) 评论(0) 推荐(1) 编辑
摘要:C++模板说到C++模板特化与偏特化,就不得不简要的先说说C++中的模板。我们都知道,强类型的程序设计迫使我们为逻辑结构相同而具体数据类型不同的对象编写模式一致的代码,而无法抽取其中的共性,这样显然不利于程序的扩充和维护。C++模板就应运而生。C++的模板提供了对逻辑结构相同的数据对象通用行为的定义。这些模板运算对象的类型不是实际的数据类型,而是一种参数化的类型。C++中的模板分为类模板和函数模板... 阅读全文
posted @ 2017-09-04 12:47 actually96 阅读(1055) 评论(0) 推荐(0) 编辑
摘要:基本lambda语法基本形式如下:[capture](parameters) mutable ->return-type {body} [capture]:叫做捕获说明符,表示一个lambda表达式的开始能够捕获上下文中的变量共lamda函数使用。 (parameters):参数列表,即这个匿名的lambda函数的参数,如果不需要传递参数,则可以省略括号; mutable: m... 阅读全文
posted @ 2017-09-04 12:46 actually96 阅读(796) 评论(0) 推荐(0) 编辑
摘要:前言 今日的C++不再是个单纯的“带类的C”语言,它已经发展成为一个多种次语言所组成的语言集合,其中泛型编程与基于它的STL是C++发展中最为出彩的那部分。在面向对象C++编程中,多态是OO三大特性之一,这种多态称为运行期多态,也称为动态多态;在泛型编程中,多态基于template(模板)的具现化与 阅读全文
posted @ 2017-09-04 12:44 actually96 阅读(1184) 评论(0) 推荐(0) 编辑
摘要:/**************************************************************************** 静态绑定:对象在声明时采用的类型,在编译期既已确定 动态类型:通常指一个指针或引用目前所指对象的类型,是在运行期决定的 静态绑定:绑定的是静态类 阅读全文
posted @ 2017-09-04 12:43 actually96 阅读(221) 评论(0) 推荐(1) 编辑
摘要:目前为止,我们一直使用传统的类型转换符来进行简单对象的类型转换。例如,要把一个double类型的浮点型数字转换为int 的整型数字,我们是这样做的: int i; double d; i = (int) d; 或者 i = int (d);<!--more--> 这样做对基本数据类型时没问题的,因为 阅读全文
posted @ 2017-09-04 12:41 actually96 阅读(217) 评论(0) 推荐(0) 编辑
摘要:也就是说子类只能访问父类的保护和公有成员,而对象只能访问公有成员。继承方式 1. 三种继承方式不影响子类对父类的访问权限,子类对父类只看父类的访问控制权。 2. 继承方式是为了控制子类(也称派生类)的调用方(也叫用户)对父类(也称基类)的访问权限。 3. public、protected、private三种继承方式,相当于把父类的public访问权限在子... 阅读全文
posted @ 2017-09-04 12:40 actually96 阅读(1006) 评论(0) 推荐(0) 编辑
摘要:大端模式:数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中,这种存储模式就类似把数据当做字符串顺序处理,例如:数据中两个字节按顺序为:FE 10 ,它表示的一个数就是0xFE10。换句话说:内存的低地址存放着数据高位; 小端模式:数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储方式就是将地址的高低和数据的位结合起来,前面的例子按照小端模式表示,应... 阅读全文
posted @ 2017-09-04 12:40 actually96 阅读(4151) 评论(1) 推荐(1) 编辑
摘要:C++中的inline用法<!--more--> 1. 引入inline关键字的原因 在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数。 栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。 在系统下,栈空间是有限的 阅读全文
posted @ 2017-09-04 12:39 actually96 阅读(2131) 评论(0) 推荐(0) 编辑
摘要:一、基础部分 1.1 什么是可变长参数 可变长参数:顾名思义,就是函数的参数长度(数量)是可变的。比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的。下面是 printf 函数的声明: int printf ( const char * format, ... ); 可变 阅读全文
posted @ 2017-09-04 12:38 actually96 阅读(411) 评论(0) 推荐(0) 编辑
摘要:理解C/C++的复杂声明 <!--more--> 曾经碰到过让你迷惑不解、类似于int * (* (*fp1) (int) ) [10];这样的变量声明吗?本文将由易到难,一步一步教会你如何理解这种复C/C++声明,我们将从每天都能碰到的较简单的声明入手,然后逐步加入const修饰符和typedef 阅读全文
posted @ 2017-04-06 15:17 actually96 阅读(283) 评论(0) 推荐(0) 编辑
摘要:Visual C++内存泄露检测—VLD工具使用说明 转载请标明出处:http://www.cnblogs.com/lidabo/archive/2012/07/19/2599745.html 一. VLD工具概述 Visual Leak Detector(VLD)是一款用于Visual C++的免 阅读全文
posted @ 2017-02-20 10:53 actually96 阅读(365) 评论(0) 推荐(0) 编辑
摘要:http://www.cnblogs.com/qlee/archive/2011/07/04/2097055.html 成员函数的重载、覆盖与隐藏成员函数的重载、覆盖(override)与隐藏很容易混淆,C++程序员必须要搞清楚概念,否则错误将防不胜防。8.2.1 重载与覆盖成员函数被重载的特征:( 阅读全文
posted @ 2017-02-15 19:29 actually96 阅读(154) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示