Boolan-C++面向对象高级编程 学习笔记(二)

2018-01-14  本文已影响0人  FishParadise

感冒了,先这样交着吧,后面再改

三大函数:拷贝构造,拷贝复制,析构

有指针的类设计:

s1 = s2

带指针的类进行复制时,需要清空原有分配的内存,再设置新的内容。

删除空间,重新分配空间,重新赋值:

Stack栈,是存在与某种作用于(Scope)的一块内存空间(memoryspace)。例如当调用函数时,函数会形成一个Stack用来存放所接受的参数,以及返回地址。

这样写,Complex的析构函数会自动被调用起来。

c2是静态对象,其声明在作用域结束后仍然存在,直到整个程序结束。

c3是全局对象,生命在整个程序结束后才结束,也可以视为一种static object,其作用域是整个程序。

Heap堆,是由操作系统提供的一块global内存空间,程序可动态分配(dynamicallocated),从中获得若干区块(blocks)。

调试模式,new complex时的内存分配,与,发布模式时的内存分配。

分配的空间都是16的倍数,不足补充pad。

cookie指的是空间大小,最低位为1表示给出去,0表示收回来。

new []与delete[]要成对使用:

static静态:

对于类内部构成来说,可以进行如下分类:

声明3个complex c1, c2, c3,此时:

非静态成员非静态成员变量是独立的三份数据,占用三份独立的内存空间。

static 成员三个对象只有一个static成员,内存中只有一份。

举例:100万个银行用于,某些属性不同,但是如利率的信息相同,利率就可以定义为static。

非静态函数三个对象的成员函数只有一份, 函数被调用时通过隐藏的this指针区分对象。

static 函数static函数没有this指针,无法得到this。所以不能访问非静态成员。通常用来存取static成员。

Singleton设计模式:

只有A自己能创建自己,保证A只有一份。只有在使用时才创建A。

强悍的cout:

cout就是一种ostream

 

类模板(模板类):

告诉编译器,目前T只是个符号。这样就行成了类模板或模板类。

在创建对象时告诉编译器T具体是什么,然后查找替换。

函数模板(functiontemplate):

类的模板使用时需要明确指出具体的类型,函数模板无需这样。因为编译器会做参数推导(argument deduction)处理。

标准库中常用函数模板。

命名空间namespace:

直接使用:“using namespace std;”,将std的包装全部打开,这样cin、cout等等全部内容可以直接使用。

单个打开:“using std::out;”,只打开cout,使用cin还需要“std::cin”。

上一篇下一篇

猜你喜欢

热点阅读