`
switchlau
  • 浏览: 54142 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

杂记—— 《C++程序设计语言》

阅读更多

1. 类定义可以由于#include的使用而在不同源文件里重复出现,这样并不违反唯一定义规则

 

2. class的const成员函数不能修改class 成员变量

 

3. 对于const或者非const对象都可以调用const成员函数,而非const成员函数则只能对非const对象调用 p205

 

4. 在类X的非const成员函数里,this 的类型就是X*;在类X的const成员函数里 this 的类型就是const X* p206

 

5. 包含const或引用成员的类不能进行默认构造,必须在构造函数的初始式中进行初始化 p218,222

 

6. union成员不能有构造函数和析构函数 ?? p218

 

7. 复制构造函数完成对未初始化的存储区的初始化,复制赋值运算符则必须正确处理一个结构良好的对象。赋值运算符的一般性策略:防止自赋值,删除老元素,初始化,复制新元素。p220

 

关于string

1. string迭代器不做范围检查。string的下标运算符 [ ] 不进行范围检查,而 at() 则进行范围检查。如果对at()超范围访问,将导致out_of_range 异常。P516

 

2. 指针和数组的等价关系对 string 不成立,如果s 是 string,&s[0] 和 s 是不一样的 P516 

 

3. string 的 length() 和 size() 是等价的,但是它们不能统计C风格的以0结束的字符串。 P517

 

4. 许多串操作以字符位置加上字符个数作为参数。如果所给的位置大于串的大小,则会抛出 out_of_range 异常,“过大”的字符计数值则简单地当作取出这个串“剩余”的字符,并不会抛出异常。 P517

 

5. 不能用单个字符对string 进行初始化,但是可以用单个字符对string 进行赋值。 P519

string s = 'a'; //wrong
string s2;
s2 = 'a';        //OK

 

6. string 的 data() 产生的是字符数组,而 c_str() 产生的是C风格字符串,即以0作为结束符。string 中可以包含0

字符。即0在 string中并不表示结束标记。?? data() 和 c_str() 产生的字符串存放与缓冲区中,如果要长期使用string的字符串表示,可以通过copy() 函数复制到一个数组中。 P520

char* c_string(const string& s)
{
       char* p = new char[s.length()+1];
       s.copy(p,s.length());
       p[s.length()]=0;
       return p;
}

 

分享到:
评论

相关推荐

    CPP杂记——移动构造函数中需要注意的问题

    总结起来,移动构造函数是C++优化内存管理的重要工具,通过右值引用实现了资源的有效转移,提高了程序性能。但同时,使用移动构造函数时必须注意资源的正确处理、避免二次拷贝以及防止自赋值导致的资源过早释放等...

    C程序设计语言

    非扫描版,带书签 如果你是一个完完全全的编程新手,本书不适合于你---- 你应该先看一本国内的C语言教材,他们虽然泛泛而谈,但至少可以让你了解具备一点最基本的C语言知识,而且不会让你感到太困难---比如潭老师的...

    android杂记:C++文件的添加log方法分享

    在Android开发中,C++文件的调试往往需要借助日志(log)来辅助开发者了解程序运行状态,进行错误跟踪和性能分析。这篇文章分享了在C++文件中添加log的几种方法,并且提供了一些实用的建议和注意事项。 首先,文章...

    oracle 9i杂记

    《Oracle 9i杂记——探索PLSQL的世界》 Oracle 9i,作为Oracle数据库的一个重要版本,引入了许多新特性和改进,其中PL/SQL(Procedural Language/Structured Query Language)是其核心组成部分,是一种结合了SQL和...

    基于Html语言的Linux知识杂记文档设计源码

    该项目是一个基于HTML语言的Linux知识杂记文档设计源码,共包含39个文件,涵盖33个reStructuredText和Markdown文档、1个许可协议、1个HTML页面、1个JavaScript脚本、1个Python脚本以及2个Markdown文件。内容主要包括...

    oracle杂记.doc

    oracle杂记.doc 这是我个人的总结。 主要是oracle的编程以及体系结构的理解。

    狱中杂记教学设计.pdf

    狱中杂记教学设计.pdf

    51 单片机C 语言学习杂记

    C语言作为通用性强、效率高的编程语言,被广泛应用在嵌入式系统开发中,与51单片机的结合,使得程序设计更为灵活和高效。 这份学习资料可能涵盖了以下几个方面: 1. **基础知识**:首先,会介绍单片机的基本概念,...

    计算机杂记

    - **定义**:C++ 是一种面向对象的编程语言,由 Bjarne Stroustrup 在 C 语言的基础上发展而来。 - **特点**: - 面向对象:支持封装、继承和多态等特性。 - 性能优越:由于接近底层,因此具有很高的运行效率。 -...

    InstallshieldX安装制作杂记

    《InstallshieldX安装制作杂记——自定义对话框的实现》 在软件开发过程中,安装程序的制作是一项不可或缺的工作。InstallshieldX作为一款强大的安装包制作工具,提供了丰富的功能,其中包括自定义对话框的创建,这...

    Hadoop大数据平台运维杂记.pptx

    事故处理部分介绍了三种常见事故:事故一——伤不起的内存、事故二——低效的MapReduce Job、事故三——OMG,整个集群完蛋了。每种事故都详细介绍了现象、原因和解决方法。 六、监控与告警 监控与告警部分介绍了...

    51单片机C语言学习杂记

    学习51单片机,需要掌握编程语言,通常有两种选择——汇编语言和C语言。汇编语言虽然能够生成高效的机器代码,但可读性较差,对于复杂的程序尤为明显。相比之下,C语言在效率与汇编语言相当的同时,具有更好的可读性...

    installshield安装制作杂记

    installshield安装制作杂记 installshield x

Global site tag (gtag.js) - Google Analytics