C primer ++ 学习笔记第8篇——C++函数

//C++函数

//内联函数

//内联函数的作用: 程序无需跳到另一个位置处执行代码,再跳回来

//内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存

//声明内联函数的措施:在函数声明 和 定义前加上关键字inline

inline double  square(double x);//申明内联函数

inline double  square(double x){

return x*x;

}//定义内联函数

//类似宏定义

#define SQUARE(X) X*X; //但是X不是参数传递

变量引用

int rats =10;

int &rods= rats;   //&不是地址符,而是类型标识符的一部分

//rats 和 rods的值和地址都一样 ,当rods++时,rats的值就自动加1

//他们是一个变量两个名称

int *p =&rats;  //指针申明

void swap(int &a,int &b){

int temp;

temp=a;

a=b;

b=temp;

} //引用传递可以改变a b的值,同时传送回去。

void swap (int *p,int *q){

int temp;

temp=*p;

*p=*q;

*q=temp;

}//指针是改变他们的指向地址

//以上两个函数都可以是现实值交换传递,但是

void swap(int a,int b){

int temp;

temp=a;

a=b;

b=temp;

} //无法实现

//何时使用引用参数

//1.程序员能够修改调用函数中的数据对象

//2.通过传递引用而不是整个数据对象,可以提高程序的运行速度

//对于使用传递的值而不做修改的函数

//1.如果数据对象很小,入内置数据类型或小型结构,则按值传递

//2.如果数据对象是数组,则使用指针,并将指针声明为指向const的指针

//3.如果数据对象是较大的结构,则使用const指针或者const引用提高程序的效率。

//4.如果数据对象是类对象,则使用const引用

//修改调用函数中的数据的函数

//1.如果数据对象是内置数据类型,则使用指针

//2.如果数据对象是数组,则只能使用指针

//3.如果数据对象是结构,则使用引用或指针

//4.如果数据对象是类对象,则使用引用

函数重载

时间: 2024-09-27 20:52:13

C primer ++ 学习笔记第8篇——C++函数的相关文章

ZMAN的学习笔记之Python篇:函数可变长参数

ZMAN的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 这次来聊聊Python中函数的“可变长参数”,在实际中经常会用到哦~  一.什么是“可变长参数” “可变长参数”就是向一个函数传入不定个数的参数.比如我写一个函数:传入一个学生参加各科目考试的成绩,求平均分,如两个学生分别传入(92, 91, 88)和(88, 95),因为每个学生参加的考试个数不同,因此传入的参数个数也就不同了,遇到这种情况,我们在定义函数的时候,可以使用“可变长参数”. 二.在定义函数时使用“可变长参数

C++ Primer学习笔记(14)——虚函数的实现机制、纯虚函数

在行文之前查阅了相关书籍,参考了一些别人的博客,在这里谢谢大家的分享!希望自己和大家在学习语言的道路上渐行渐远,一直走下去~~~ 上一篇文章中说道,C++ 的三个基本特质是 封装.继承.多态. 多态性是将接口与实现进行分离.用形象的语言解释就是实现已共同的方法,但因个体差异而采用不同的策略. 多态包括静多态和动多态,分别在编译和运行过程中实现.而动多态是由虚函数来实现的,其实现机制体现了C++的神秘性. 1.虚函数的实现机制 虚函数是那些以 virtual 关键字修饰的成员函数,是用来实现多态的

C++ Primer 学习笔记_102_特殊工具与技术 --运行时类型识别[续]

特殊工具与技术 --运行时类型识别[续] 三.RTTI的使用 当比较两个派生类对象的时候,我们希望比较可能特定于派生类的数据成员.如果形参是基类引用,就只能比较基类中出现的成员,我们不能访问在派生类中但不在基类中出现的成员. 因此我们可以使用RTTI,在试图比较不同类型的对象时返回假(false). 我们将定义单个相等操作符.每个类定义一个虚函数 equal,该函数首先将操作数强制转换为正确的类型.如果转换成功,就进行真正的比较:如果转换失败,equal 操作就返回 false. 1.类层次 c

C++ Primer 学习笔记_98_特殊工具与技术 --优化内存分配

特殊工具与技术 --优化内存分配 引言: C++的内存分配是一种类型化操作:new为特定类型分配内存,并在新分配的内存中构造该类型的一个对象.new表达式自动运行合适的构造函数来初始化每个动态分配的类类型对象. new基于每个对象分配内存的事实可能会对某些类强加不可接受的运行时开销,这样的类可能需要使用用户级的类类型对象分配能够更快一些.这样的类使用的通用策略是,预先分配用于创建新对象的内存,需要时在预先分配的内存中构造每个新对象. 另外一些类希望按最小尺寸为自己的数据成员分配需要的内存.例如,

C++ Primer 学习笔记_73_面向对象编程 --再谈文本查询示例

面向对象编程 --再谈文本查询示例 引言: 扩展第10.6节的文本查询应用程序,使我们的系统可以支持更复杂的查询. 为了说明问题,将用下面的简单小说来运行查询: Alice Emma has long flowing red hair. Her Daddy says when the wind blows through her hair, it looks almost alive, like a fiery bird in flight. A beautiful fiery bird, he

C++ Primer 学习笔记_74_面向对象编程 --再谈文本查询示例[续/习题]

面向对象编程 --再谈文本查询示例[续/习题] //P522 习题15.41 //1 in TextQuery.h #ifndef TEXTQUERY_H_INCLUDED #define TEXTQUERY_H_INCLUDED #include <iostream> #include <fstream> #include <sstream> #include <vector> #include <set> #include <map&g

C++ Primer 学习笔记_19_类与数据抽象(5)_初始化列表(const和引用成员)、拷贝构造函数

C++ Primer 学习笔记_19_类与数据抽象(5)_初始化列表(const和引用成员).拷贝构造函数  从概念上将,可以认为构造函数分为两个阶段执行: 1)初始化阶段: 2)普通的计算阶段.计算阶段由构造函数函数体中的所有语句组成. 一.构造函数初始化列表 推荐在构造函数初始化列表中进行初始化 1.对象成员及其初始化 <span style="font-size:14px;">#include <iostream> using namespace std;

C++ Primer 学习笔记_14_标准模板库_bitset位集合容器

C++ Primer 学习笔记_14_标准模板库_bitset位集合容器 bitset容器是一个bit位元素的序列容器,每个元素只占一个bit位,取值为0或1,因而很节省内存空间.下图是一个bitset的存储示意图,它的10个元素只使用了两个字节的空间. 使用bitset需要声明头文件"#include <bitset>" 1.创建bitset对象 创建bitset对象时,必须要指定容器的大小.bitset对象的大小一经定义,就不能修改了.下面这条语句就定义了bitset对

C++ Primer 学习笔记_23_标准模板库_stack.

C++ Primer 学习笔记_11_标准模板库_stack.queue队列容器与priority_queue优先队列容器 1.stack堆栈 stack堆栈是一个后进先出(Last In First Out,LIFO)的线性表,插入和删除元素都只能在表的一端进行.插入元素的一端称为栈顶,而另一端称为栈底.插入元素叫入栈(Push),删除元素叫出栈(Pop).下图是堆栈示意图 堆栈只提供入栈,出栈,栈顶元素访问和判断是否为空等几种方法.采用push()方法将元素入栈:采用pop()方法出栈:采用