博览网C++课程 第二周

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

有指针的类设计:

 

s1 = s2

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


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

8 堆,栈与内存管理

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


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

 

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

 

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

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

 

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

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

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


 

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

 

9 复习String类的实现过程



inline是对编译器的建议,最终的决定权在编译器。

10 扩展补充:类模板,函数模板,及其他

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”。

 

下节课:类和类直接的关系:集成、复合、委托。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值