- 浏览: 204550 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (231)
- C++学习 (41)
- vc学习 (25)
- vc异常 (4)
- Flex (2)
- Ext (0)
- java学习笔记 (15)
- mysql学习笔记 (1)
- ibatis学习笔记 (7)
- struts1学习笔记 (1)
- hibernate学习笔记 (3)
- javascript学习笔记 (8)
- eclipse快捷键 (2)
- 英语学习 (1)
- cmd (1)
- eclipse 配置 (2)
- 其他 (4)
- JAVASE (34)
- firefox (1)
- linux (8)
- Apache (6)
- cms (22)
- jsuc (10)
- html (3)
- css (1)
- 作图 (2)
- vs2012 (2)
- 编码转换 (12)
- work_unicode (1)
- work_webbrowser (1)
- work_trade_quotes_login (1)
- c#学习 (38)
- wpf学习 (31)
- wpf快速学习 (1)
- VB学习 (1)
- NSIS (4)
- log4cpp (3)
- 学习web (1)
- 经验 (1)
- c_汇编 (1)
最新评论
函数的返回主要分为以下几种情况:
1、主函数main的返回值:
允许主函数main没有返回值就可结束;可将主函数main返回的值视为状态指示器,返回0表示程序运行成功,其他大部分返回值则表示失败。
2、返回非引用类型:
函数的返回值用于初始化在调用函数时创建的临时对象(temporary object),如果返回类型不是引用,在调用函数的地方会将函数返回值复制给临时对象。
在求解表达式的时候,如果需要一个地方存储其运算结果,编译器会创建一个没命名的对象,这就是临时对象。C++程序员通常用temporary这个术语来代替temporary object。
用函数返回值初始化临时对象与用实参初始化形参的方法是一样的。
当函数返回非引用类型时,其返回值既可以是局部对象,也可以是求解表达式的结果。
3、返回引用类型:
当函数返回引用类型时,没有复制返回值,相反,返回的是对象本身。
千万不要返回局部对象的引用!千万不要返回指向局部对象的指针!
当函数执行完毕时,将释放分配给局部对象的存储空间。此时对局部对象的引用就会指向不确定的内存!返回指向局部对象的指针也是一样的,当函数结束时,局部对象被释放,返回的指针就变成了不再存在的对象的悬垂指针。
返回引用时,要求在函数的参数中,包含有以引用方式或指针方式存在的,需要被返回的参数。
4、返回const类型
由于返回值直接指向了一个生命期尚未结束的变量,因此,对于函数返回值(或者称为函数结果)本身的任何操作,都在实际上,是对那个变量的操作,这就是引入const类型的返回的意义。当使用了const关键字后,即意味着函数的返回值不能立即得到修改!如下代码,将无法编译通过,这就是因为返回值立即进行了++操作(相当于对变量z进行了++操作),而这对于该函数而言,是不允许的。如果去掉const,再行编译,则可以获得通过,并且打印形成z = 7的结果。
1、主函数main的返回值:
允许主函数main没有返回值就可结束;可将主函数main返回的值视为状态指示器,返回0表示程序运行成功,其他大部分返回值则表示失败。
2、返回非引用类型:
函数的返回值用于初始化在调用函数时创建的临时对象(temporary object),如果返回类型不是引用,在调用函数的地方会将函数返回值复制给临时对象。
在求解表达式的时候,如果需要一个地方存储其运算结果,编译器会创建一个没命名的对象,这就是临时对象。C++程序员通常用temporary这个术语来代替temporary object。
用函数返回值初始化临时对象与用实参初始化形参的方法是一样的。
当函数返回非引用类型时,其返回值既可以是局部对象,也可以是求解表达式的结果。
3、返回引用类型:
当函数返回引用类型时,没有复制返回值,相反,返回的是对象本身。
千万不要返回局部对象的引用!千万不要返回指向局部对象的指针!
当函数执行完毕时,将释放分配给局部对象的存储空间。此时对局部对象的引用就会指向不确定的内存!返回指向局部对象的指针也是一样的,当函数结束时,局部对象被释放,返回的指针就变成了不再存在的对象的悬垂指针。
返回引用时,要求在函数的参数中,包含有以引用方式或指针方式存在的,需要被返回的参数。
int& abc(int a, int b, int c, int& result) { result = a + b + c; return result; }
4、返回const类型
由于返回值直接指向了一个生命期尚未结束的变量,因此,对于函数返回值(或者称为函数结果)本身的任何操作,都在实际上,是对那个变量的操作,这就是引入const类型的返回的意义。当使用了const关键字后,即意味着函数的返回值不能立即得到修改!如下代码,将无法编译通过,这就是因为返回值立即进行了++操作(相当于对变量z进行了++操作),而这对于该函数而言,是不允许的。如果去掉const,再行编译,则可以获得通过,并且打印形成z = 7的结果。
include <iostream> include <cstdlib> const int& abc(int a, int b, int c, int& result) { result = a + b + c; return result; } int main() { int a = 1; int b = 2; int c=3; int z; abc(a, b, c, z)++; //wrong: returning a const reference cout << "z= " << z << endl; return 0; }
发表评论
-
manifest
2015-06-08 17:57 1881我遇到的问题: 将 Upload.exe Upload.exe ... -
log4CPP多线程支持的缺角(一)(转)
2015-06-01 10:59 1010log4CPP多线程支持的缺角 ... -
minizip压缩文件夹(转)
2015-06-01 10:26 2255#include <atlconv.h> / ... -
文件大小(转)
2015-06-01 10:08 494方法一: WIN32_FIND_DATA fi ... -
log4cpp环境变量
2015-05-13 15:32 677log4cplus.appender.DEBUG_MSG.Fi ... -
linux设置环境变量putenv() setenv() getenv()(转)
2015-05-13 15:28 1201linux设置环境变量putenv() setenv() ge ... -
VC学习:log4cpp
2015-05-12 15:37 808基于LGPL开源项目 Log4cpp ... -
VC异常:File:write.c Line:67
2015-05-12 15:29 745VC异常:File:write.c Line:67 路径没找 ... -
C++异常:rethrow【转】
2015-05-08 15:20 421C++异常rethrow【转】 http://se.csai. ... -
VC异常:Free Heap block xxxxxxxx modified at xxxxxxxx after it was freed(转)
2015-05-08 15:18 1179Free Heap block xxxxxxxx modifi ... -
VC异常:Free Heap block XXXXXX modified at XXXXXX after it was freed(转)
2015-05-07 15:41 3071Free Heap block XXXXXX modified ... -
VC中关于 0xcccccccc、0xcdcdcdcd和 0xfeeefeee 异常值说明
2015-05-07 15:14 1165VC中关于 0xcccccccc、0xcdcdcdcd和 0x ... -
析构函数后,还可以调用函数成员
2015-05-07 15:13 885析构函数后,还可以调用函数成员 类的所有的函数成员的是编译时期 ... -
[size=medium] c,c#判断socket是否断开[/size]
2015-03-17 13:28 1101c,c#判断socke ... -
时间转换
2015-01-08 11:55 487时间转换 public static long DateT ... -
C++ localtime函数需要注意的地方
2015-01-08 11:42 1011time_t tLast = pLastFQKLineIt ... -
TerminateThread
2014-11-13 14:04 685TerminateThread. 如线程内部不涉及空间开辟, ... -
VC退出线程的方法(转载)
2014-10-23 17:39 732VC退出线程的方法 标题很简单,但是要讨论的地方不少; ... -
创建文件夹CreateDirectoryA(file, 0);
2014-10-23 17:19 1510创建文件夹CreateDirectoryA(file, 0) ... -
heap corruption detected错误解决方法调试方法以及内存管理相关(转载)
2014-10-23 16:57 1160heap corruption detected错误解决方法调 ...
相关推荐
4. **第五章 函数.ppt** - 函数是C++中复用代码的重要手段,这部分可能包括函数的定义、参数传递、返回值以及函数重载的概念。 5. **第六章 程序结构.ppt** - 可能涉及C++中的命名空间、预处理器指令、文件包含和...
对于`x = 9999`,将其转换为二进制(111111111111),可以看出有8个`1`,所以函数返回值是8。这个函数通常用于计算位图中的连续1的个数。 - 第二个问题是关于C++的**引用**。引用是一个已存在对象的别名,它不占...
当通过基类指针或引用调用虚函数时,会根据实际对象的类型调用相应的函数版本,从而实现了动态绑定。 #### 三、多态性的具体实现案例 ##### 3.1 静态多态案例 在提供的部分代码示例中,我们看到了一个简单的静态...
- **基本类型**:如`short int`、`int`、`long int`、`char`、`float`、`double`、`long double`、`bool`、`void`等,其中`bool`类型用于布尔逻辑运算,`void`类型常用于函数返回值。 - **非基本类型**:包括`enum`...
2. 函数返回值:函数可以通过引用返回一个大对象,避免复制开销。 3. 作为容器(如数组、向量)的迭代器:引用可以使迭代过程更加简洁和高效。 总的来说,引用在C++中提供了安全、高效的代码编写方式,特别是在处理...
在Qt框架中,C++作为其主要编程语言,有时候我们需要在一个函数中返回多个值。C++标准库并不直接支持返回多个值,但可以通过多种方法来实现这一目标。本篇文章将详细探讨在Qt环境中如何调用函数并返回多个值。 1. *...
本压缩包“C++hanshu.rar”包含了关于C++函数的详细资料,特别是与C++函数库和Visual C++相关的知识。 首先,我们来看“C++函数库电子手册.chm”。这个文件通常是一个Windows帮助文件,其中包含了详尽的C++函数库...
全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流介绍、常量、内联函数、命名控制、引用和拷贝构造函数、运算符重载、 动态对象创建、继承和组合、多态和虚...
【C++课程设计——计算各分数表达式的值】 在本次C++课程设计中,学生将面临一项挑战,即设计一个程序来计算各种分数表达式的值。这个任务旨在帮助学生巩固和提升他们的C++编程技能,特别是涉及到分数运算、文件...
C++函数库是C++编程语言中不可或缺的一部分,它提供了丰富的功能,使程序员能够高效地构建复杂的软件系统。"C++函数库帮助.chm"是一个专门针对C++函数的参考资料,旨在帮助用户快速查找和理解各种C++库函数。CHM文件...
* 返回非引用类型的表达式,如 x++、x+1 * 除字符串字面量之外的字面量,如 11、true 右值引用的特点: * 右值引用就是对一个右值进行引用的类型,需立即初始化,引用只是对该对象的一个别名。 * 右值引用可以对...
C++是一种广泛应用于系统软件开发、游戏编程、嵌入式系统和桌面应用...在后续的学习中,你还将接触到函数的更多特性,如函数指针、重载函数、递归函数以及C++11引入的lambda表达式等,这些都是C++函数功能的重要扩展。
4. 在C++中,引用类型提供了一种访问变量的别名方式。通过引用,可以不用返回值就能将函数的修改反映到实际变量上。 5. C++中的布尔类型用于表示逻辑值,它有两个常量值true和false。理解布尔类型对于编写条件语句...
- **返回语句(Return Statement)**:用于从函数返回值给调用者。如果函数不返回任何值,则可以省略 `return` 语句。 #### 示例解析 接下来,我们通过一个具体的例子来进一步理解函数的概念: ```cpp #include /...
#### 九、C++函数高级特性 - **函数重载**:函数重载允许在同一个作用域内定义多个同名函数,通过不同的参数列表区分它们。 - **成员函数的重载、覆盖与隐藏**:了解成员函数的重载、覆盖与隐藏的区别对于面向对象...
在函数调用中,函数可以有返回值或无返回值,有参数或无参数,函数的定义和调用需遵循一定的格式,参数类型和实参类型需匹配。类的定义包括公共成员、保护成员和私有成员,访问权限修饰符控制成员的可见性。 综上所...
15. **C++11及更高版本特性**:熟悉C++11、C++14、C++17及更高版本的新特性,如Lambda表达式、右值引用、自动类型推断(`auto`)、协程等,提升代码效率和简洁度。 通过学习和实践这些知识点,C++程序员可以显著...
声明常引用的方式是`const 类型标识符 &引用名 = 目标变量名`。常引用可以避免意外修改,提高代码安全性。例如: ```cpp void print(const int& num) { // num = 20; // 错误,尝试修改常引用 } ``` 常引用在处理...