摘要:
C++中常量成员函数的含义 <!--more--> 本文内容来源:《C++必知必会》 使用常量成员函数可以改变对象的逻辑状态,虽然对象的物理状态没有发生改变。考虑如下代码,它定义了一个类X: class X{ public: X():buffer_(0),isComputed_(false){} / 阅读全文
摘要:
写时拷贝技术是通过"引用计数"实现的,在分配空间的时候多分配4个字节,用来记录有多少个指针指向块空间,当有新的指针指向这块空间时,引用计数加一,当要释放这块空间时,引用计数减一(假装释放),直到引用计数减为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... 阅读全文
摘要:
C++模板说到C++模板特化与偏特化,就不得不简要的先说说C++中的模板。我们都知道,强类型的程序设计迫使我们为逻辑结构相同而具体数据类型不同的对象编写模式一致的代码,而无法抽取其中的共性,这样显然不利于程序的扩充和维护。C++模板就应运而生。C++的模板提供了对逻辑结构相同的数据对象通用行为的定义。这些模板运算对象的类型不是实际的数据类型,而是一种参数化的类型。C++中的模板分为类模板和函数模板... 阅读全文
摘要:
基本lambda语法基本形式如下:[capture](parameters) mutable ->return-type {body} [capture]:叫做捕获说明符,表示一个lambda表达式的开始能够捕获上下文中的变量共lamda函数使用。 (parameters):参数列表,即这个匿名的lambda函数的参数,如果不需要传递参数,则可以省略括号; mutable: m... 阅读全文
摘要:
前言 今日的C++不再是个单纯的“带类的C”语言,它已经发展成为一个多种次语言所组成的语言集合,其中泛型编程与基于它的STL是C++发展中最为出彩的那部分。在面向对象C++编程中,多态是OO三大特性之一,这种多态称为运行期多态,也称为动态多态;在泛型编程中,多态基于template(模板)的具现化与 阅读全文
摘要:
/**************************************************************************** 静态绑定:对象在声明时采用的类型,在编译期既已确定 动态类型:通常指一个指针或引用目前所指对象的类型,是在运行期决定的 静态绑定:绑定的是静态类 阅读全文
摘要:
目前为止,我们一直使用传统的类型转换符来进行简单对象的类型转换。例如,要把一个double类型的浮点型数字转换为int 的整型数字,我们是这样做的: int i; double d; i = (int) d; 或者 i = int (d);<!--more--> 这样做对基本数据类型时没问题的,因为 阅读全文
摘要:
也就是说子类只能访问父类的保护和公有成员,而对象只能访问公有成员。继承方式 1. 三种继承方式不影响子类对父类的访问权限,子类对父类只看父类的访问控制权。 2. 继承方式是为了控制子类(也称派生类)的调用方(也叫用户)对父类(也称基类)的访问权限。 3. public、protected、private三种继承方式,相当于把父类的public访问权限在子... 阅读全文
摘要:
大端模式:数据的低位保存在内存的高地址中,而数据的高位保存在内存的低地址中,这种存储模式就类似把数据当做字符串顺序处理,例如:数据中两个字节按顺序为:FE 10 ,它表示的一个数就是0xFE10。换句话说:内存的低地址存放着数据高位; 小端模式:数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中,这种存储方式就是将地址的高低和数据的位结合起来,前面的例子按照小端模式表示,应... 阅读全文