C++primer plus 第12章笔记

一. 动态内存类
1.C++在分配内存的时候让程序决定内存的分配,而不是在编译的时候决定的,这样可以根据程序的需要来决定的内存的使用
2.静态的数据成员在类声明中声明,在包含类方法的文件中进行初始化。声明描述了如何分配内存,但不分配内存。静态成员可以在类声明外使用单独的语句进行初始化。但是如果静态成员是const整数类型或枚举类型,可以在类的声明中初始化
3.strlen()返回字符串的长度,但不包括末尾的空字符
4.删除对象可以释放对象本身占用的内存,但不能自动释放属于成员的指针指向的内存,因此需要使用析构函数,在构造函数使用new来分配内存时,必须在相应的析构函数中使用delete来释放内存,new[]就要对应delete[],来释放内存
5.当用一个对象去初始化另一个对象的时候编译起将自动的生成一个复制构造函数,这些自动生成的构造函数可能与类的设计不符p352,调用复制构造函数,可能直接的进行创建,也可能使用复制构造函数生成一个临时对象,然后临时对象再进行赋值,创建了临时对象就会调用析构函数删除临时对象。默认的复制构造函数时浅拷贝,逐个的复制非静态成员
6.拷贝构造函数要用const引用,为了表明对传递进来的对象不做任何修改,不加const也可以照常运行

bad sailor=sports;
bad sailor=bad(sports);
//相应的构造函数原型为
bad(const bad&)
   6.带参数的构造函数也可以是默认的构造函数,所有的参数都有默认值


1.C++11引入了关键字nullptr用于表示空指针,也可以像以前一样使用0
2.是用中括号表示法访问字符,且中括号运算符可以使用operator来重载该运算符,二元的C++运算符(带两个操作数),一个操作数位于中括号的前面,另一个操作数位于两个中括号的中间p359
3.静态成员函数不与特定的对象相关联,因此只能使用静态成员函数
4.使用new的时候,如果有多个构造函数,则必须以相同的方式使用new,要么都带中括号,要么都不带中括号,因为只有一个析构函数,所有的构造函数都必须与它兼容,但是可以在一个构造函数中将指针初始化为空,在另一个构造函数初始化为指针,delete可以用于空指针

1.当成员函数或独立的函数返回对象时,有几种返回方式可供选择,可以返回指向对象的引用,指向对象的const引用或const对象,

vector max=MAX(f1,f2);


如果返回对象将调用复制构造函数,返回引用工作效率更高p366
2.返回指向非const对象的引用,
3.如果被返回的对象是被调用函数中的局部变量,则不应按引用方式返回,因为被调用函数执行完毕时,局部对象将调用其析构函数,因此当控制权回到调用函数时,引用指向的对象将不再存在,在这种情况下应该返回对象而不是引用。
四。使用指向对象的指针
1. 如果对象是动态变量,则当执行完定义该对象的程序块时调用该对象的析构函数。
2. 如果是静态变量,则在程序结束时将调用对象的析构函函数
3. 如果对象是new创建的,则仅当显示使用delete删除对象时,析构函数才会调用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值