
c++
xinglianfly
路漫漫其修远兮,吾将上下而求索。
展开
-
c++动态数组(一)之new和delete
new和delete运算符一次分配/释放一个对象,但某些应用需要一次为很多对象分配内存功能。 c++语言和标准库提供了两种一次分配一个对象数组的方法。 c++语言定义了另一种new表达式语法,可以分配并初始化一个对象数组 标准库中包含一个名为allocator的类,允许我们将分配和初始化分离。new和数组 int *pia = new int[1024];//分配1024个int,pia原创 2017-12-25 11:37:36 · 2804 阅读 · 0 评论 -
c++ 之类的控制与封装
class和struct的区别我们可以使用class 和struct 的任何一个来定义类,唯一的一点区别就是struct和class的访问权限不太一样。当我们希望定义的类的所有成员是publ的是,使用struct,反之,如果希望成员是private的,使用classfriend 友元类可以允许其他类或者函数访问他的非公有成员,方法是领其他类或者函数称为他的友元。clas原创 2018-01-26 15:59:25 · 298 阅读 · 0 评论 -
c++ 之类成员
可变数据成员有时(但不会特别频繁)会发生这样一种情况,我们希望能修改类的某个数据成员,即使是在一个const成员函数内,可以通过在变量的声明中加入mutable关键字做到这一点。一个const成员函数可以改变一个可变成员的值。举个例子,我们将给Screen添加一个名为access_ctr的可变成员,通过它我们可以追踪每个Screen的成员函数被调用了多少次。class Screen原创 2018-01-30 23:44:53 · 224 阅读 · 0 评论 -
c++动态数组(二)之allocator类
new在灵活性上面一些局限性,以方便它将内存分配和对象构造组合在了一起,delete将内存释放和对象析构组合在一起。当分配一大块内存时,我们通常计划在这块内存上面按需构造对象。allocator类它帮助我们将内存分配和对象构造分离开来。原创 2017-12-25 16:54:46 · 358 阅读 · 0 评论 -
c++之智能指针(一)之动态内存与智能指针
动态内存与智能指针在c++中,动态内存的管理是通过一对运算符来完成的:new: 在动态内存中为对象分配空间并返回一个指向该对象的指针。delete: 接受一个动态对象的指针并销毁该对象,并释放与之关联的内存。例子 //新建一个动态数组,元素个数为960*520,array是一个指针,指向数组的第一个int int *array = new int[960*520]; delete原创 2017-12-23 15:07:46 · 370 阅读 · 0 评论 -
c++之智能指针(二)之直接管理内存
直接管理内存c++定义了两个运算符来分配和释放动态内存。new分配内存,delete释放new分配的内存。 相对于智能指针,使用这个两个运算符非常容易出错。因为它不能依赖类对象拷贝、赋值和销毁操作的任何默认定义。使用new动态分配和初始化对象默认情况下,动态分配的对象是默认初始化的。这意味着内置类型或组合类型的值将是未定义的。而类类型的对象将用默认的构造函数进行初始化。string *ps = n原创 2017-12-23 16:16:44 · 303 阅读 · 0 评论 -
c++智能指针(三)之shared_ptr和new结合使用
shared_ptr和new结合使用我们除了使用make_shared来初始化一个智能指针,还可以使用new返回的指针来初始化智能指针。shared_ptr<int> p1(new int(42));//p1指向一个值为42的intshared_ptr<int> p2 = new int(1024);//错误,不能将一个内置指针隐式转化为智能指针。我们不能将一个内置指针隐式转化为智能指针。原创 2017-12-24 19:54:06 · 14499 阅读 · 0 评论 -
c++智能指针(四)之unique_ptr
unique_ptr和shared_ptr不同,某个时刻只能有一个unique_ptr指向一个给定的对象。初始化没有类似make_shared的标准库函数返回一个unique_ptr,需要将其绑定到一个new返回的指针上。 unique_ptr<int> u(new int(1024)); 由于unique_ptr拥有它所指向的对象,所以他不支持普通的拷贝和赋值操作。unique_ptr原创 2017-12-24 21:38:05 · 386 阅读 · 0 评论 -
c++智能指针(五)之weak_ptr
weak_ptrweak_ptr是一种不控制所指向对象的生存期的智能指针,它指向由一个shared_ptr所管理的对象。将一个weak_ptr绑定到shared_ptr上面不会改变shared_ptr的引用计数。 一旦最后一个指向对象的shared_ptr被销毁,对象就会被释放。创建auto p = make_shared<int>(42);weak_ptr<int>q(p);//q弱共享p,原创 2017-12-24 22:27:06 · 911 阅读 · 0 评论 -
C++ 之类的函数
类的基本思想是数据抽象和封装,数据抽象是一种依赖于接口和实现分离的编程艺术。封装实现了类的接口和实现的分离。封装后的类隐藏了它的实现细节。成员函数成员函数的声明必须放在类的内部,它的定义既可以在类的内部也可以放在外部。作为接口组成部分的非成员函数,它们的定义和声明都在类的外部。class Sales_data {friend Sales_data add(const Sale原创 2018-01-24 21:38:51 · 193 阅读 · 0 评论