随笔分类 -  C++

摘要:void f();void f(int );void f(int,int);void f(double,double=3.14);f(5.6);//调用void f(double,double)确定候选函数和可行函数函数匹配的第一步是选定本次调用对应的重载函数集,集合中的函数称为候选函数。候选函数具... 阅读全文
posted @ 2014-08-07 15:42 Jessica程序猿 阅读(2462) 评论(0) 推荐(0)
摘要:1 默认实参某些函数有这样一些参数,在函数的很多次调用中它们都被赋予一个相同的值,此时,我们把这个反复出现的值称为函数的默认实参。调用含有默认实参的函数时,可以包含该实参,也可以省略该实参。我们可以为一个或多个形参定义默认值,不过需要注意的是,一旦某个形参被赋予了默认值,它后面的所有形参都必须有默认... 阅读全文
posted @ 2014-08-07 13:32 Jessica程序猿 阅读(1499) 评论(0) 推荐(0)
摘要:函数重载如果同一作用域内的几个函数名字相同但形参列表不同,我们称之为重载函数。例如:void print(const char *cp);void print(const int *beg,const int *end);void pring(const int ia[],size_t size);... 阅读全文
posted @ 2014-08-06 22:53 Jessica程序猿 阅读(5048) 评论(0) 推荐(0)
摘要:#include #include using namespace std;//传入的参数是数组的指针,返回值是数组的指针string (*fun(string (*s)[10]))[10]{ return s;}//using str_arr = string (*)[10];/*typed... 阅读全文
posted @ 2014-08-06 20:39 Jessica程序猿 阅读(769) 评论(0) 推荐(0)
摘要:#include #include using namespace std;//传入的参数是数组的引用,返回值也是数组的引用string (&fun(string (&s)[10]))[10]{ return s;}//using str_arr = string (&)[10];/*type... 阅读全文
posted @ 2014-08-06 20:14 Jessica程序猿 阅读(3985) 评论(1) 推荐(0)
摘要:return语句终止当前正在执行的函数并将控制权返回到调用该函数的地方。return语句有两种形式:return;return expression;无返回值函数没有返回值的return语句只能用在返回类型是void的函数中。返回void的函数不要求非得有return语句,因为在这类函数的最后一句后... 阅读全文
posted @ 2014-08-06 17:32 Jessica程序猿 阅读(11254) 评论(0) 推荐(0)
摘要:一旦程序员把注意力都转向了对象传值方式隐含的效率问题(参见第 20 条)时,许多人都变成了极端的“改革运动者”,他们对传值方法采取斩草除根的态度,在他们不屈不挠追求传递引用方式的纯粹性的同时,他们也犯下了致命的错误:有时候传递的引用所指向的对象并不存在。这决不是一件好事情。请看下面的示例,其中的 R... 阅读全文
posted @ 2014-08-06 15:06 Jessica程序猿 阅读(1112) 评论(0) 推荐(0)
摘要:一般我们都知道不能返回局部变量的指针,但很多人知道其然,不知道所以然,那么接下来我们分析一下,先看两段代码/*test1.c*/#include char* get_str(){ char str[] = {"hello"}; return str;}int main(){ char* p = ge... 阅读全文
posted @ 2014-08-06 11:16 Jessica程序猿 阅读(689) 评论(0) 推荐(0)
摘要:函数返回值时,要生成一个值的副本。而用引用返回值时,不生成值的副本。 例如,下面的程序是有关引用返回的4种形式: //********************* //** ch9_6.cpp ** //********************* #include ... 阅读全文
posted @ 2014-08-06 11:00 Jessica程序猿 阅读(271) 评论(0) 推荐(0)
摘要:数组的两个特殊性质对我们定义和使用作用在数组上的函数有影响,这两个性质分别是:不允许拷贝数组以及使用数组时(通常)会将其转换成指针。因为不能拷贝数组,所以我们无法以值传递的方式使用数组参数。因为数组会被转换成指针,所以当我们为函数传递一个数组时,实际上传递的是指向数组首元素的指针。尽管不能以值传递的... 阅读全文
posted @ 2014-08-05 23:51 Jessica程序猿 阅读(1147) 评论(0) 推荐(0)
摘要:当形参是const时,必须要注意关于顶层const的讨论。如前所述,顶层const的作用于对象本身:const int ci=42; //不能改变ci,const是顶层的int i=ci; //正确:当拷贝ci时,忽略了它的顶层constint *const p=&i; //const是顶层的,不... 阅读全文
posted @ 2014-08-05 21:53 Jessica程序猿 阅读(5254) 评论(0) 推荐(1)
摘要:跳转语句中断当前的执行过程,C++语言提供了4中跳转语句:break、continue、goto和return。break语句break语句负责终止离他最近的while、do while、for或switch语句,并从这些语句之后的第一条语句开始继续执行。break语句只能出现在迭代语句或者swit... 阅读全文
posted @ 2014-08-05 16:18 Jessica程序猿 阅读(783) 评论(0) 推荐(0)
摘要:首先回顾一下C++类型转换:C++类型转换分为:隐式类型转换和显式类型转换第1部分.隐式类型转换何时发生隐式类型转换在下面这些情况下,编译器会自动地转换运算对象的类型:在大多数表达式中,比int类型小的整型值首先提升为较大的整数类型在条件中,非布尔值转换为布尔类型初始化过程中,初始值转换成变量的类型... 阅读全文
posted @ 2014-08-04 22:13 Jessica程序猿 阅读(357) 评论(0) 推荐(0)
摘要:sizeof运算符返回一条表达式或一个类型名字所占的字节数。sizeof运算符满足右结合律,其所得的值是一个size_t类型的常量表达式。运算符的运算对象有两种形式:sizeof(type)sizeof expr在第二种形式中,sizeof返回的是表达式结果类型的大小。与众不同的一点是,sizeof... 阅读全文
posted @ 2014-08-04 18:03 Jessica程序猿 阅读(904) 评论(0) 推荐(0)
摘要:赋值运算符的左侧运算对象必须是一个可修改的左值,如果给定int i=0,j=0,k=0; //初始化而非赋值const int ci=i; //初始化而非赋值则下面的赋值语句都是非法的:1024=k ; //错误:字面值是右值i+j=k; //错误:算术表达式是右值ci=k;//错误:ci是常量... 阅读全文
posted @ 2014-08-04 17:28 Jessica程序猿 阅读(1166) 评论(0) 推荐(0)
摘要:多维数组严格来说,C++语言中没有多维数组,通常所说的多维数组其实是数组的数组。谨记这一点,对今后理解和使用多维数组大有益处。使用范围for语句处理多维数组两层嵌套的for循环来处理多维数组的元素:constexptr size_t rowCnt=3,colCnt=4;int ia[rowCnt][... 阅读全文
posted @ 2014-08-04 10:44 Jessica程序猿 阅读(751) 评论(0) 推荐(0)
摘要:尽管C++支持C风格字符串,但在C++程序中最好还是不要使用它们。这是因为C风格字符串不仅使用起来不太方便,而且极易引发程序漏洞,是诸多安全问题的根本原因。字符串字面值是一种通用结构的实例,这种结构即是C++由C继承而来的C风格字符串。C风格字符串不是一种类型,而是为了表达和使用字符串而形成的一种约... 阅读全文
posted @ 2014-08-04 01:52 Jessica程序猿 阅读(2410) 评论(1) 推荐(1)
摘要:数组是一种类似于标准库类型vector的数据结构,但是在性能和灵活性的权衡上又与vector有所不同。与vector相似的地方是,数组也是存放类型相同的对象的容器,这些对象本身没有名字,需要通过其所在位置访问。与vector不同的地方是,数组的大小确定不变,不能随意向数组中增加元素。因为数组的大小固... 阅读全文
posted @ 2014-08-03 20:48 Jessica程序猿 阅读(624) 评论(0) 推荐(0)
摘要:标准库类型string标准库类型string表示可变长的字符序列,使用string类型必须首先包含string头文件。作为标准库的一部分,string定义在命名空间std中。接下来的示例都假定了已包含了下述代码:#include using std::string; 本节描述最常用的string操作... 阅读全文
posted @ 2014-08-02 22:28 Jessica程序猿 阅读(1383) 评论(0) 推荐(0)
摘要:预处理技术概述确保头文件多次包含仍能安全工作的常用技术是预处理器,它由C++语言从C语言继承而来。预处理器是在编译之前执行的一段程序,可以部分地改变我们所写的程序。之前已经用到了一项预处理功能#include,当预处理器看到#include 标记时就会用指定的头文件的内容代替#include。C++... 阅读全文
posted @ 2014-08-02 12:20 Jessica程序猿 阅读(563) 评论(0) 推荐(0)