【每天学一点】C++基础02

来源:互联网 发布:网络二层 三层区别 编辑:程序博客网 时间:2024/06/04 18:17

  今天又看了几家公司,感觉暑期实习都没有的招了,好像只有10月份的秋招了,好慌,怎么办。又再网上投了几家公司,依旧没什么消息呢。果然已经过了找实习的时间了。今天依旧是放假的样子,教研室依旧没什么人,好无聊啊。


const限定符:定义一个变量,它的值不能被改变。
1.任何试图向const限定的变量赋值,都会引发错误。

const float pi=3.14;pi=3.14 //错误

2.const对象必须初始化

const int a=get_num(); //正确,运行时初始化const int c=10 //正确,编译时初始化const int b;  //错误

3.多文件引用常量

//global.hextern const float pi;//global.cppextern const float pi = 3.14; //定义初始化一个常量//b.cpp#include<iostream>#include"global.h"using namespace std;float getR(){    return pi * 2;}//a.cpp#include<iostream>#include"global.h"#include"b.h"using namespace std;void main(){    float r = getR();    cout << "r=" << r << endl;    float s = pi*r*r;    cout << "s=" << s << endl;    getchar();}

输出结果:
r=6.28
s=123.837

从结果可以看出通过extern,不同文件都可以用到定义的常量。

const引用和指针

int a=1;int &r1=a;const int &r2=a;r1=0;     //将a的值变成0r2=0;     //错误,不能对常量引用修改
const int a=1;int *p1=&a;  //错误,a是一个常量const int *p2=&a;  //正确,p2可以指向一个int型常量*p2=0//错误,不能赋值*p2

常量指针:

//指针常量int a,b=1;const int *p1=&a;*p1=2; //错误,*p不能赋值。p1=&b //正确//常量指针int *const p2=&a;*p2=0; //正确,可以赋值p2=&b; //错误P2不可改变//补充const int a=1;int b=3;const int *p3=&a; //正确,p3=&b; //正确int *const p4=&a; //错误,由于*p4可以修改,而a为常量,所以程序报错。

constexpr :可以让系统判断验证变量的值是否是一个常量表达式。

constexpr int m=1//1是常量表达式 constexpr int s=2*m; //m*2是个常量表达式 constexpr int sz=size(); //只有当size()是一个constexpr函数时,这才是一条正确的语句

类型别名

//typedeftypedef double dou; //dou是double的同义词typedef dou a,*b;  //a是double的同义词,b是double*的同义词//usingusing s=double //s是double的同义词 

 
预处理保护头文件重定义

#ifndef GLOBAL_H  //当且仅当变量未被定义时为真,与之对应#ifdef#define GLOBAL_Hextern const float pi;#endif  //定义过后忽略#define~#endif之间语句 #pragma once //似乎也有用。  
0 0
原创粉丝点击