const constptr 和引用的盲点

#include<iostream>
//const 和 引用的值必须初始化
//等号左侧是const或者const和引用,右侧可以是数字,普通变量-等号左侧是const和指针,右侧必须是const或者引用  ---
//---但是等号右侧是const,则左侧必须是const
using namespace std;

int j = 0; //这里规定i和j都必须定义在函数体外
constexpr int i = 2; //这里规定i和j都必须定义在函数体外
int main()
{
	const int *p = nullptr; // p是一个指向整形常量 的指针
	constexpr int * q = nullptr; //  q是一个指向整数的 常量指针

	constexpr const int *p0 = &i;
	constexpr int *p1 = &j;
	constexpr const int  *p2 = &j;
	const int *p3 = &j;//引用的本质是一个常量指针! 

	{//const引用让变量拥有只读属性 (不能通过引用来修改原值了)
		int b ;//这里赋不赋初值都对
		const int &a = b;
	}
	{//如果用一个对象去初始化另一个对象,则它们是不是const都无关紧要。
		int c = 10;
		const int d = c;
		int e = d;
	}
	{//对常量的引用,引用及其对应的对象都是常量。
		const int x = 1024;
		const int & y = x;
		//	int & y1 = x; 不对
		//	y = 43;  不对,试图用一个非常量引用指向一个常量对象
	}
	{//指针引用===等号左侧是const和指针,右侧必须是const或者引用
		int i1 = 2;
		const int *j = 0;
		const int *i2 = &i1;
		const int *i3 = j;
	}

	system("pause");
}

  

  不过仍旧有疑问:

就是i和j为什么必须定义到函数体外部,并且定义在内部显示

时间: 2024-10-10 15:09:09

const constptr 和引用的盲点的相关文章

const成员或者引用成员必须使用构造函数初始化列表的方式

#include<iostream.h> class A { const int a; int b; }; void main() { A obja; }编译出现如下错误:error C2512: 'A' : no appropriate default constructor available;如果将const去掉就没错了! #include<iostream.h> class A { public: const int a; int b; A(int x):a(x){} };

不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用

[源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象,  const 指针和指向 const 对象的指针, const 对象的引用 作者:webabcd 介绍不可或缺 Windows Native 之 C++ this 指针 对象数组 对象和指针 const 对象 const 指针和指向 const 对象的指针 const 对象的引用 示例1.CppEmployee 类CppEmployee.h #pragma

C++const类型的引用参数

string类定义了一种char*到string的转换功能,这使得可以使用C-风格字符串来初始化string对象. 类型为const引用的形参其中一个属性表明:假设实参的参数类型与引用参数不匹配,但可以转换为引用类型,程序将创建一个正确类型的临时变量,使用转换后的实参值来初始化它,然后传递一个指向该临时变量的引用. 上面提到const引用为形参的属性,也就是说,如果引用的参数是const,则编译器在某些情况下会生成临时变量,比如下面这两种情况:1, 实参类型不正确,但可以转换为正确类型.2, 实

C++中const用法(3)——引用形参问题

c++函数的引用参数用法大概是这样的: void swap(int &a,int &b) { int temp = a; a = b; b = temp; } 一个简单的交换两个int型数的函数,当调用该函数时,比如 int i = 3; int j = 4; swap(i,j); 则得到的结果是i=4,j=3.因为引用参数实际上是实参的别名,对引用参数操作也就是对实参进行操作,就像传递指针一样.而如果用普通的int型参数则得不到这样的效果. 如果用const修饰形参,比如const in

C++ const关键字修饰引用

//const修饰引用的两种用法 #include<iostream> using namespace std; struct Teacher{ char name[30]; int age; }; void SetA(const Teacher &t1){ //t1.age = 13; //报错 error C3490: 由于正在通过常量对象访问“age”,因此无法对其进行修改 } void main(){ //第一种用法 Teacher t; t.age = 12; SetA(t)

关于react const声明变量引用this.state,然后setState不刷新问题

mdzz..const声明的变量保持原引用. this.setState会发现引用没有改变更改内部属性不会触发更新. let picList: any = this.state.resumeImages; picList = JSON.parse(JSON.stringify(picList)) if (picList[index]) { picList[index].src = key; } else { picList.push({ src: key }) } this.setState({

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

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

const常量引用的使用方法

C++编程语言中,对于常量的引用是一个非常重要的应用技巧.在这篇文章中,我们将会为大家详细介绍一下有关C++常量引用的相关应用方法,相信大家可以从中学到很多知识. C++单例模式基础内容详解 C++创建Web服务相关方法剖析 C++构造函数如何进行初始化 C++标识符命名规则相关应用技巧分享 C++函数模板基本概念讲述 如果是对一个常量进行引用,则编译器首先建立一个临时变量,然后将该常量的值置入临时变量中,对该引用的操作就是对该临时变量的操作.对C++常量引用可以用其它任何引用来初始化:但不能改

C++ Primer 学习笔记_17_从C到C++(3)--引用、const引用、引用传递、引用作为函数返回值、引用与指针区别

欢迎大家阅读参考,如有错误或疑问请留言纠正,谢谢 一.引用 1.引用是给一个变量起别名 变量: 名称 空间 引用: 引用不是变量 引用仅仅是变量的别名 引用没有自己独立的空间 引用要与它所引用的变量共享空间 对引用所做的改变实际上是对它所引用的变量的改变 引用在定义的时候必须要进行初始化 引用一经初始化,不能重新指向其他变量 2.定义引用的一般格式: (1)类型  &引用名 = 变量名: (2)例如: int a=1; int &b=a; // b是a的别名,因此a和b是同一个单元 (3)