C++新特性 lambda
摘要:/*C++新特性:lambda表达式:是C++新特性最终要之一,实际上是提供了一个类似匿名函数的特性,而匿名函数则是在需要的一个函数,但是又不想费力去命名一个函数的情况下去使用的。[捕获列表](参数列表)mutable(可选)异常属性->返回类型{//函数体}上面的语法规则除了[捕获列表]内的东西外
阅读全文
placement new
摘要:/* 我们一般指placement new就是指重载new() delete() 我们可以重载class member operatir new(),前提是每一个版本的申明都有独特的参数列, 第一个参数是size_t ,其余参数以new所指定的placement arguments未初值。 foo* p = new(300,'c')foo; */ #include #include ...
阅读全文
array new /delete
摘要:使用构造函数,构造函数连续构造: 上述代码说明,array new和array delete,是一对必须一起使用,否则会造成内存泄露。上述代码是整型变量,不存在析构函数,也就不存在内存泄漏,所以即使不使用析构函数也影响不大。
阅读全文
能直接调用析构函数,不能直接调用构造函数
摘要:在我们进行面向对象程序设计的时候,我们肯定要设计自己的类,这样一来,我们就需要设计自己需要的构造函数和析构函数,那么我们可以通过指针直接调用构造函数和析构函数吗? 进行验证: 经过上述代码,我们发现,在类外直接调用构造函数是不行的,但是可以直接调用析构函数。
阅读全文
STL
摘要:1、STL的代码从广义上来说,分为三类:algorithm(算法),container(容器),和iterator(迭代器),几乎所有的代码都采用了模板类和模板函数的方式,这相比传统的由函数和类组成的苦来说提供了更好的重用机会,在C++标准中,STL被组织为下面的13个头文件:<algotithm>
阅读全文
容器
摘要:1、几种容器的比较: (1)vector:内部数据结构:数组 在末尾增加或者删除元素所需时间与元素数目无关,在中间或者开头增加或者删除所需时间呈线性变化。 (2)deque:内部数据结构是:数组 随机访问每个元素,所需要的时间为常量。在开头和末尾增加元素所需时间与元素数目无关,在中间增加或删除所需时
阅读全文
聚合类
摘要:1、聚合类:使得用户可以直接访问其成员,并且有特殊的初始化语法形式。满足条件如下:(1)搜游成员都是public的 (2)没有定义任何构造函数 (3)没有类内部初始值 (4)没有基类,也没有virtual函数 1 2 3 4 5 struct data { int ival; sring s; }
阅读全文
类class 2
摘要:类构成了实现C++面向对象设计的的基础。类是C++封装的基本单元,他把数据和函数封装在一起。当类的成员声明为保护时,外部不能访问,声明为公共时,则在任何地方都可以访问。 1、从结构到类。 C的结构可以把相关联的数据元素组成一个单独的统一体。 说明结构对象的方法是:结构名+变量名 在类中说明的,要么是
阅读全文
构造函数再探
摘要:对于任何语言来说,构造函数都是一个非常重要的东西。 1、构造函数初始值列表: 如果没有在构造函数的初始值列表中显示的初始化成员,则该成员在构造函数体之前执行默认初始化。 (1)构造函数的初始值有时必不可少:如定义一个类时,必须要对私有成员变量进行初始化,否则就会报错。 如果成员时const,引用,或
阅读全文
继承
摘要:继承是C++语言的一种重要机制,该机制自动地为一个类提供来自另一个类的操作和数据结构,这使得程序员只需在新类中定义已有类中没有的成分来建立新类。理解继承是理解面向对象程序设计的所有方面的关键,所以本章是很重要的。 1、继承的概念: 鸭子是鸟类的派生,鸭子是鸟类的一种,鸭子又拥有自己的特征,就是会嘎嘎
阅读全文
静态成员与友元
摘要:类是类型而不是数据对象,而每个类的对象都是该类数据成员的拷贝。然而,需要让类的所有对象在类的范围内共享某个数据。声明为static的类成员,便能在类范围中共享,称为静态成员。友元函数完全是普通的C++函数,不同的是,它可以访问类的保护或私有成员,方便编程,提高了效率,但却破坏了类的封装。 1、静态成
阅读全文
strcpy和strncpy用法和区别
摘要:strcpy和strncpy用法和区别 1. strcpy函数:顾名思义字符串复制函数:原型:extern char *strcpy(char *dest,char *src); 功能:把从src地址开始且含有NULL结束符的字符串赋值到以dest开始的地址空间,返回dest(地址中存储的为复制后的
阅读全文
堆与拷贝构造函数
摘要:在C++中,堆分配的概念得到了扩展,不仅C++的关键字new和delete可以分配和释放堆空间。而且通过new建立的对象要调用构造函数,通过delete删除对象也要调用析构函数。另外,当对象被传递给函数或者对象从函数返回的时候,会发生对象的拷贝。 1、关于堆: c++程序的内存格局通常分为4个区:(
阅读全文
构造函数2
摘要:C++的构造函数和析构函数,使类的对象能够轻易的被创建和撤销。构造函数创建类对象,初始化其成员,析构函数撤销类对象。构造函数和析构函数是类的特殊成员函数,他们的设计与应用,直接影响编译程序处理对象的方式。构造函数和析构函数的实现使C++的类机制得以充分显示。所以本章内容是C++的重点之一。 学习了本
阅读全文
类
摘要:类构成了实现C++面向对象设计的的基础。类是C++封装的基本单元,他把数据和函数封装在一起。当类的成员声明为保护时,外部不能访问,声明为公共时,则在任何地方都可以访问。 1、从结构到类。 C的结构可以把相关联的数据元素组成一个单独的统一体。 说明结构对象的方法是:结构名+变量名 在类中说明的,要么是
阅读全文
迭代器
摘要:我们知道可以使用下标运算符来访问,string对象的字符或者vector对象的元素。还有另外一种机制可以实现同样的目的。这就是迭代器。除了vector之外,标准库还定义了其他几种容器。所有标准库容器都可以使用迭代器,但是其中只有少数几种才同时支持下标运算符,类似指针类型,迭代器也提供了对对象的间接访
阅读全文
访问控制与封装
摘要:目前为止,我们已经为类定义了接口,但并没有任何机制强制用户使用这些接口。我们的类还没有封装,也就是说,用户可以直达sales_data对象的内部并且控制它的具体实现细节。在C++中,我们使用访问说明符加强类的封装性; 定义在public说明符之后的成员在整个程序内可被访问,public成员定义类的接
阅读全文
构造函数
摘要:只有当类没有声明任何构造函数时,编译器才会自动的生成默认构造函数。 在类的外部定义构造函数: 构造函数的名字必须与类名相同,构造函数没有返回类型,sales_data::sales_data的含义是我们定义的sales_data类的成员,他的名字是sales_data.又因为该成员的名字和类名相同,
阅读全文
定义抽象数据类型
摘要:在C++语言中,我们使用类定义自己的数据类型。通过定义新的类型来反映待解决问题中的各种概念,可以使我们更容易编写,调试,和修改程序。 类的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程技术。累得接口包括用户所能执行的操作;类的实现则包括类的数据成员、负责接口实现的函数体以及类所需
阅读全文
函数基础
摘要:1、函数基础: 一个典型的函数包含:函数名,返回类型,形参列表。 其中,形参以逗号隔开,形参的列表位于一对圆括号内。函数执行的操作在语句块中说明,该语句成为函数体。 我们通过使用运算符来执行函数。调用运算符的形式是一对圆括号,它作用于一个表达式,该表达式是函数或者指向函数的指针,圆括号内部是实参列表
阅读全文