云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > C++程序设计笔记

C++程序设计笔记

  • 62 次阅读
  • 3 次下载
  • 2025/6/25 11:29:22

常用的string操作 s.size( )、s.length( ) s.empty( ) s.max_size( ) s.capacity( ) s.reserve( ) 返回s中字符的个数 如果s为空串,则返回true,否则返回false 返回字符的可能最大个数 返回重新分配之前的字符容量 保留一定量内存以容纳一定数量的字符 ==、!=、<、<=、>、>=、按字典序比较字符串 s.compare( ) =、s.assign( ) s.erase( ) s1 + s2 +=、s.append( ) s[n]、s.at(n) 字符串赋值 清空字符串 把s1和s2连接成一个新字符串,返回新生成的字符串 在尾部添加字符 存取s中位置为n的字符,位置从0开始计数 find( )、rfind( )、substr( )、 子串查找 find_first_offind_first_not_offind_last_offind_last_not_of s.insert( ) s.replace( ) s.swap( ) >>、getline( ) s.c_str( ) s.data( ) s.begin( )、s.end( ) s.rbegin( )、s.rend( ) s.get_allocator( ) ……

vector的几个常用构造函数 vector v1; vector v2(v1); vector v3(n, i); 创建一个空的vector,此vector保存类型为T的对象 v2是v1的一个副本 用元素个数和元素值初始化vector对象,v3包含n个值为i的元素 vector v4(n); 创建一个vector,含有n个元素,元素按缺省值初始化 、、和插入字符 字符串替换 交换两个字符串的内容 从stream读取某值 将内容以c_string返回 将内容以字符数组形式返回 提供类似STL的迭代器支持 逆向迭代器 返回配置器 …… vector v(beg,end); 创建一个下标上下界为[beg, end)半闭半开区间的vector 常用的vector操作 v.empty( ) v.size( ) v.push_back(elem) v[index] 、v.at(index) v.begin( )、v.end( ) v.erase(pos) v.erase(beg, end) v.pop_back( ) …… 如果v为空,则返回true,否则返回false 返回v中实际元素的个数 在v的末尾增加一个值为elem的元素 返回v中索引为index的元素 指向迭代器中的第一个和最后一个数据地址 删除pos位置的数据,传回下一个数据的位置 删除[beg, end)区间的数据,传回下一个数据的位置 删除最后一个数据 ……

vector的empty( )和size( )函数与string类似,size( )返回vector相应的size_type类型,注意,使用size_type类型时,必须同时包含vector的元素类型: vector::size_type

// 错误

// 正确

vector::size_type

定义时,数组长度不可以是变量

在数组定义时,如果没有指定数组元素的初值,则数组元素的初始化规则如下:基本数据类型数组,如果在函数体外定义,则其元素均初始化为0,如果在函数体内定义,则其元素不初始化。

对于嵌套的循环语句,break语句只能跳出当前(本层)循环语句,即从内层循环跳到外层循环,要退出外层循环还要在外层循环中使用break,

continue语句只能用在循环语句的循环体中,表示立即结束本次循环,准备进入下一次循环。

? 对于while和do-while语句,continue语句将使控制转到循环条件的判断;

? 对于for语句,continue语句将使控制转到:先计算表达式3,然后计算表达式2,

并根据表达式2的计算结果来决定是进入下一次循环还是结束循环。 注意:continue语句不能在循环语句之外单独使用,用在嵌套循环语句中时,只对当前循环起作用。

? 可用#undef命令终止宏名的作用域,格式为: #undef 宏名

引用通过在变量名前添加“&”符号来定义,格式如下: 数据类型名 &引用名 = 目标变量名;

传值调用的特点是:编译器将实参复制一个副本给形参,在被调用函数中,形参的改变只影响副本值,而不影响调用函数的实参值。

引用定义时必须初始化

? 函数调用需要保存现场和返回地址,代价是增加时间和空间的开销,影响效率,因

此,对于语句行不多,但又被频繁地调用的函数,为避免函数调用的开销,在C++中引入内联函数。

? 内联函数执行时不发生函数调用,而是由编译器在编译时用内联函数的函数体替换

调用语句,节省了调用开销,但相应地增加了目标代码量。

? 内联函数的定义是在函数定义前加上关键字inline:

inline int sum(int a, int b) { return a + b; }

inline int sum(int a, int b) { }

定义重载函数时要注意以下几点:

? 重载函数的形参必须不同,或者参数个数不同,或者参数数据类型不同。只有这样,

编译器才有可能根据不同的参数去调用不同的重载函数。如上例中,当实参为整数

时,则调用整数求和函数;当实参为实数,则调用实数求和函数;

? 返回值类型不能区分重载。在C++语言中,编译器选择相应的重载函数版本时,函

数返回值类型不起作用,不能根据函数的返回值来区别重载函数,必须依据形式参数区别;

通过函数指针变量调用函数的一般步骤如下:

? 先定义函数指针变量,如int (*p)(int, int);语句,在此形参变量名可省略; ? 把被调用函数的函数名(入口地址)赋给函数指针变量,如程序中p = maxValue;语句;

? 通过函数指针变量调用函数,如程序中max = (*p)(a, b); 语句。

注意:当局部与全局变量同名时,在块内与局部变量同名的全局变量不起作用,即局部变量优先。但在块内可通过作用域运算符“::”来引用与局部变量同名的全局变量。

对于const对象只能调用其const成员函数。

静态全局变量:全局变量定义加上static关键字,就成为静态全局变量 。静态全局变量是

return a + b;

为了使全局变量只限于被本文件使用,而不能被其它文件引用。

静态局部变量属于静态存储类别,在程序开始执行时,为这种变量分配存储空间,当调用结束后,系统并不收回这些变量所占用的存储空间,当再次调用函数时,变量仍使用相同的存储空间,因此,变量仍保留原来的值,即在整个程序运行期间变量都存在;

虽然静态局部变量在函数调用后仍然存在,但其它函数不能引用它,只能由定义它的函数引用。

已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。定义格式: <类型说明符> <函数名> (<参数表>) const

对于类A,拷贝构造函数是指函数定义如下的构造函数: A::A(const A& obj) { // 拷贝构造函数 }

// …

静态数据成员的初始化不在类的构造函数中进行,而是在类体外单独进行的,一般地,在类的实现文件中直接赋初值。

所谓友元函数,是说它不是类的一个成员函数,却可以直接访问类的private成员。友元函数可以是一个普通的全局函数,也可以是其它类的成员函数。 double fn(clsName obj) {…} double clsTwo::ffn(clsName obj){…} class clsName { public:

friend double fn(clsName obj); private: … friend double clsTwo::ffn(clsName obj); };

注意:

? 在类外提供虚函数的实现时,不能再加virtual关键字,否则会编译报错,这点和类

中const成员函数不一样。 ? 如果在类外实现const成员函数,那么定义和实现处都要有const关键字。 ? 而对于虚函数,在基类定义的地方要加virtual关键字,在派生类的定义处可加可不

加virtual关键字,在类外虚函数的实现处不能加virtual关键字。

重载(overload)是指相同作用域内函数之间同名但参数不同的情形。

C++不支持跨域重载,重载只发生在相同的作用域内。在同一个类中,多个参数不同的同名函数构成重载。在基类和派生类间,若成员函数同名而且参数不同,那么派生类成员函数将遮蔽基类同名成员函数,而不是重载。

搜索更多关于: C++程序设计笔记 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

常用的string操作 s.size( )、s.length( ) s.empty( ) s.max_size( ) s.capacity( ) s.reserve( ) 返回s中字符的个数 如果s为空串,则返回true,否则返回false 返回字符的可能最大个数 返回重新分配之前的字符容量 保留一定量内存以容纳一定数量的字符 ==、!=、<、、>=、按字典序比较字符串 s.compare( ) =、s.assign( ) s.erase( ) s1 + s2 +=、s.append( ) s[n]、s.at(n) 字符串赋值 清空字符串 把s1和s2连接成一个新字符串,返回新生成的字符串 在尾部添加字符 存取s中位置为n的字符,位置从0开始计数 find( )、rfind( )、substr( )、 子串查找 find_first_offind_first_not_offi

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com