C++引用复习

//引用复习

#include<iostream>

using namespace std;

void show1()

{

cout << "show1" << endl;

}

void show2()

{

cout << "show2" << endl;

}

void show3()

{

cout << "show3" << endl;

}

int main()

{

int one = 1;

int &r1(one); //左值引用,引用的内存实体

int &&r2(one+1);//右值引用,引用的寄存器中的值

int &&r3(move(one));//move 可以把左值作为右值引用

cout << one << " " << r1 << " " << r2 << " " << r3 << endl;

int two = 1;

int* p(&two);

int* (&rp)(p);//一级指针的引用形式

int** pp(&p);

int (**(&rpp))(pp); //二级指针的引用形式

int* && temp(&two); //对变量取地址是右值,需用右值引用

cout << *rp << " " << **rpp << endl;

void(*a)()(show1); //函数指针

a();

void(*&aa)()(a);   //函数指针引用

aa();

void(*ra[3])(){show1, show2, show3}; //栈上的函数指针数组

for(auto i:ra)

{

i();

}

void(*(&rra)[3])()(ra); //引用栈上的函数指针数组

for(auto i:rra)

{

i();

}

void(**raa)() = new (void(*[3])()){show1, show2, show3}; //堆上的函数指针数组

for(int i = 0; i < 3; i++)

{

raa[i]();

}

void(**(&rraa))()(raa);

for(int i = 0; i < 3; i++) //引用堆上的函数指针数组

{

rraa[i]();

}

return 0;

}

时间: 2024-08-27 19:46:31

C++引用复习的相关文章

ios项目中引用其他项目复习

ios项目中引用其他开源项目,今天再次复习了,记个备注. 1. 将开源项目的.xcodeproj拖入项目frameworks 2. Build Phases下 Links Binary With Libraries 引入.a文件.Target Dependencies里引入开源项目文件 3. Build Setting下的 Search Paths 里 Header Search Paths 加入开源项目src目录 例:$(SOURCE_ROOT)/IBAForms/headers ,IBA放在

复习PHP-语言参考-引用

1.引用指的是不同的名称访问同一个变量内容 最简单的例子为: <?php $a = &$b; ?> 在形参中加入引用变量,则实参会在函数执行时被影响. 自 PHP 5 起,new 自动返回引用,所以$a = & new a;会报错. 注意以下一个示例: <?php $a = 5; $b = 7; function foo() {     global $a,$b;     $b = &$a; // if $GLOBALS['b'] = &$a;  $b的值

js文件引用的问题顺带复习css引用

js文件包含在<script>块中用scr引用,css在link和@import来引用,css不是本篇的重点,直接引用一个博主的总结: “ 区别1:link是XHTML标签,除了加载CSS外,还可以定义RSS等其他事务:@import属于CSS范畴,只能加载CSS. 区别2:link引用CSS时,在页面载入时同时加载:@import需要页面网页完全载入以后加载. 区别3:link是XHTML标签,无兼容问题:@import是在CSS2.1提出的,低版本的浏览器不支持. 区别4:ink支持使用J

C#基本语法复习-理解值和引用

复制值类型的变量和类: 除了string类型为引用类型外,C#的大多数基本数据类型都是值类型. 值类型复制时,会产生一个副本,对副本的修改不会对原值产生影响,而对于引用类型,对象只有一个是存储在堆上的,复制时只是将其引用进行复制,应用中包含了该对象的一个地址. 理解null值和可空类型: 可以将null赋值给引用变量. 使用可空类型: null为一个引用不能将其赋给值类型,但是可以将一个变量声明为可空的值类型,int? i=null; 理解可空类型的属性: hasvalue属性指出一个可空类型是

iOS复习笔记7:循环引用问题

1 @class @class ClassName,仅仅告诉编辑器ClassName是一个类 避免循环拷贝 在.h中使用@class声明 在.m文件中import头文件 2 循环引用问题 2.1 定义: 指两个对象互相retain对方,通过release是无法销毁这两个对象 2.2 描述: 比如在main函数中创建了两个类的对象A和B,现在引用计数都是1. 现在让A和B互相引用,两个对象的引用计数都增加了1,都变成了2. 执行[A release];[B  release];main函数就释放了

JAVA基础复习与总结&lt;一&gt;(2) 父类引用指向子类对象(向上转型、动态链接)

public class Animal { public static void main(String[] args){ Animal animal = new Cat(); animal.voice(); drinkWater(animal); //调用静态方法,传入的是父类引用的子类对象 } String str; public void voice(){ System.out.println("普通动物叫声!"); } public static void drinkWater

C++基础复习

一. C++与C的比较: C语言是一个结构化语言,它的重点在于算法和数据结构,C语言的设计首先要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到的输出(或实现过程(事物)控制). C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制. 所以C语言和C++的最大区别在于它们解决问题的思想不同,一个面向过程一个面向对象. C++对C的"增强",表现在六个方面: 1.类型检测更为严格. 2.

大量逻辑判断优化的思路——责任链模式复习总结及其和状态模式对比

俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的总结知识点如下: 责任链模式概念和例子 使用的条件 和状态模式的比较分析 责任链的优缺点 纯的责任链和不纯的责任链 javax.servlet.Filter#doFilter()方法源码分析 基于AOP思想,模拟一个拦截器 前面说了一个状态模式,总结过程中发现和这个责任链的使用场景很类似,都是为了解耦大量复杂业务逻辑判断的,那么他们有什么不同呢?回忆状态模式——状态模式允许通过改变对象的内部状态而改变对象自身的行为,这个对象

underscore 复习 对象函数 篇章

_.partial = function(func) { var boundArgs = slice.call(arguments, 1); var bound = function() { var position = 0, length = boundArgs.length; var args = Array(length); for (var i = 0; i < length; i++) { args[i] = boundArgs[i] === _ ? arguments[positio