• c++课程感想7


    const:

    const的设计就是为了干掉#define,主要有三个方面:

    1.常数

    #include <iostream.h>
    
    #define pi 3.1415926
    
    void main()
    {
    	int a = 5;
    	int b = 3;
    	cout << "a = " << a << endl;
    	cout << &a << endl;
    	cout << &b << endl;
    // 	cout << &5 <<endl;	//5是常量,没有指针
    
    
    //	cout << "pi = " << pi << endl;
    
    //	const int c;
    
    	const int c = 6;
    // 	c = 6;
    	cout << &c << endl;
    	cout << "c = " << c << endl;
    }
    

      在这个程序中,我们看结果,可以看出const也是在栈区,而且是和定义的变量是连在一起的,如果这时候写一句代码,5 = 3,编译是不能通过的,因为5是在代码区的,一般是不允许对代码区的数据赋值的。所以不能通过编译。但是即使是const在内存里面是不能改变的,我们也可以通过指针跳过编译器,然后改变const所指的值。

    2.const指针的三个维度:

    const 指针 1.指向常量的指针(*P是常量,P不是常量)  2.指针常量(P是常量,*P不是常量)  3.指向常量的指针常量(P是常量,*P是常量) 

    #include <iostream.h>
    
    void main()
    {
    	const int a = 5;
    	const int b = 6;
    
    	int c = 7;
    
    //	int *pa = &a;		//不能将const int* 赋值给int*
    
    	const int* p ;	//const 约束了指针所指向的对象的常量性,并未约束指针本身
    //	*p = 10;			//error
    
    //	p = &b;				//ok! 并未约束指针本身
    
    //	p = &c;				//可以将int* 赋值给const int*
    //	c = 15;
    //	*p = 15;			//error, 虽然c可以被赋值,确不能向*p赋值(p指向c),
    }
    

      在这里,是第一个维度,我们想象成一个扇形,就是发散的那个不能改

         第二种是可以摆动,

      第三种是都不行。

    分别对应之前的那几个。

    3.const 函数 表示里面不能带有赋值的语句,其实这种设计涉及到软件工程的思想。

  • 相关阅读:
    选择排序
    冒泡排序
    java多线程
    Java中的内存泄露的几种可能
    "==" 与 “equals”
    保证service不被杀死的方法
    反射、注解、依赖
    引导页
    适配:px与dp转换
    四 主要的几种 Web 服务器
  • 原文地址:https://www.cnblogs.com/wit-lq/p/4881163.html
Copyright © 2020-2023  润新知