【c++ 基础知识 0001 const 知识】教程文章相关的互联网学习教程文章

01 C++的引用,const,new/delete,重载,内联函数的概念辨析【代码】

目录1 引用的概念1-0 基本概念1-1 变量的引用1-2 函数返回值的引用1-3 常引用1-4 常引用与非常引用的转换1-5 const关键字的使用2 内存的分配2-1 new与delete的使用2-2 指针使用注意点3 内联函数与函数重载与函数的缺省参数3-1 内联函数3-2 函数重载3-3 函数的缺省参数 1 引用的概念 1-0 基本概念定义引用时一定要初始化为某个变量 引用只能引用变量不能引用表达式,常量1-1 变量的引用 int a = 0; int &r = a; //变量r的类型为in...

C++强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast

文章目录 1. c强制转换与c++强制转换 2. static_cast 详解 3. dynamic_cast 详解 4. const_cast 详解 5. reinterpret_cast 详解 6. 归纳总结1. c强制转换与c++强制转换C语言强制类型转换主要用于基础的数据类型间的转换,语法为:(type-id)expression //转换格式1type-id(expression) //转换格式2C++除了能使用C语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dyna...

C/C++判断数据类型与顶层const与底层const的区分【代码】

数据类型判断要想弄清这些声明的含义最行之有效的办法是从右往左阅读。《C++ Primer》如是说。 int errNumb = 0; int *const curErr = &errNumb; const double pi = 3.14; const double *const pip = π int *const curErr = &errNumb; 离curErr最近的为const,表示curErr是一个常量对象; 接着是解引用操作符,表示curErr是常量指针; 剩下的int表示指向int类型的常量指针; 所以curErr是一个指向int类型的常量指针pip是一个指向...

C++中的const【代码】

const成员函数加const加const表示值能不能被修改const对象不可以调用非const函数非const对象可以调用const对象class A { int _a; public:getI()//只读{return _i;}setI()//修改{_i=i;} int _a; } A a;//非const const A b;//const a.setI(10);//可以 a.getI();//可以b.setI(10);//不可以 b.getI();//可以成员函数本身有默认的this指针,为A cosnt this;加const为:const A const this;权限问题,const封锁权限权限多的可以调用权...

C++|函数的参数加了const和&有什么作用?【代码】

一直被这个const和&所困扰,今天终于忍受不了了,于是开始各种百度。 首先说一下const修饰函数参数 按值传递:传给形参的是实参的副本,即使形参在函数体内改变了,实参也不会受到影响。 void fun(const int i){i = 10; // 按值传递,报错: assignment of read-only parameter }void ComputeImageBounds(const</

《Effective C++》条款20、尽量用const &替换值传递【图】

const &能避免拷贝的开销 在c++的参数传递过程中,有两种传值方式,一种是我们将会传递值,另一种则是我们将会传递一个const 参数引用。 这两种方式有本质的区别,我们更推荐传递常量引用的方式进行参数传递。考虑从以下代码: 现在我们有个函数会把Student作为参数传入没然后判断该学生信息是否合法。 如果我们采用以上的方式进行值传递,那么我们在函数的局部作用域内就会为我们传入的Student对象做一个值得拷贝,也就是调用St...

C++const关键帧作用【代码】

修饰普通变量,表示不可修改 #include <iostream> using namespace std; const int a1 = 10; int main() {const int a2 = 10;a1 = 10; // 错误,不可修改变量的值int b1 = a1; // 可以给其余变量赋值 }修饰指针 const修饰指针时分3种情况:常量指针、指针常量、常指针常量。 常量指针 #include <iostream> using namespace std; int main() {int a = 10;// 常量指针,指针指向对象的值不能变,指针指向的对象可以变const int* p...

c++ const 与 指针的小实验【代码】

指向常量的指针 有各种类型的指针,int *,char * 虽然类型不同,但它们的大小都是相同的(64位 8字节,32位4字节) 而指向常量的指针,因为其指针类型是常量,随意不能通过指针改变值 上代码#include <iostream>using namespace std;int main() {int age = 12;const int *p = &age;(*p) = 13;return 0; }使用g++编译g++ const.cpp const.cpp: In function ‘int main()’: const.cpp:10:7: error: assignment of read-only locat...

C++ “an incomplete type” error(使用extern const 数组的问题)【代码】

开发中遇到一个问题,要做的事情是这样事的,在File_1.cpp定义了一个const的数组,在File_2.cpp中需要使用这个数组。 File_1.cpp // 声明和定义 extern const int s_data[] = {1, 2, 3};File_2.cpp // 声明 extern const int s_data[];// 某函数使用```cpp int num = sizeof(s_data) / sizeof(int); for (int i = 0; i < num; i++) {// get and use s_data[i] }编译过程中总是发现下面的error error: invalid application of ‘siz...

狄泰C++学习笔记-第3课 - 进化后的 const 分析

C++中的const常量 (1)碰见const声明时在符号表中放入常量 (2)编译过程中发现使用常量直接以符号表中值替换 (3)给对应常量分配存储空间的情况一是对const常量使用extern另一个是使用&操作符。

C++中const的用法

简介 Const 是C++中常用的类型修饰符,常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。 优点:改善程序的健壮性。 提高效率(节省内存和大大减少了复制变量的时间)。总之,好处多多,尽量用const。 作用 C++中的const关键字的用法非常灵活,下面就来总结下使用const的作用(7个): 1. 可以定义const常量,具有不可变性。 例如,const int MAX=100; // MAX不可变int array[MAX]; 2. 便于进...

const在c和c++中【代码】

CONST在c/c++中异同C(待补充,暂认为相同)C++1.修饰普通变量,并以常量初始化时,变量会存放在符号常量表里(属于代码段,不可取地址)2.如果对其取地址,会再为它开辟空间3.以变量初始化则不会放在符号常量表 #include <stdio.h> #include<stdlib.h>int main(int argc, char* argv[]) {const int a = 10;printf("a=%d\n",a);printf("a的地址=%p\n",&a);//虽然为a开辟了空间,但还是不可以修改//a = 20;//除非采用隐式转换(在c+...

C++类型转换(static_cast、dynamic_cast、const_cast、reinterpret_cast)【代码】

文章目录 1 静态类型转换(static_cast)2 动态类型转换(dynamic_cast)3 常量类型转换(const_cast)4 重新解释转换(reinterpret_cast)5 类型转换总结类型转换(cast):将一种数据类型转换为另一种数据类型。 标准C++提供显式转换的语法,基于模板技术实现,以替代C风格的类型转换,可更好地控制强制转换的过程,允许控制各种不同类型的强制转换,且能够清晰地表明作用。注:C++实际开发中,应尽可能少地使用类型转换,除非用...

C++尽可能使用const【代码】

尽可能使用constconst修饰变量 const修饰函数 const修饰成员函数const修饰变量 如果变量本身不应该被修改,应该使用const修饰。这样编译器可以进行保护,确保这个变量不会被修改 char greeting[] = "Hello"; char *p = greeting; // non-const pointer, non-const data const char *p = greeting; // non-const pointer, const data char * const p = greeting; //

C++尽量以const,enum,inline替换#define【代码】

最好编译器替换预处理器以const替换#define 以enum替换#define 以inline替换#define以const替换#define #define ASPECT_RATIO 1.653替换为: const double AspectRatio = 1.653?调试的需要:#define的记号会被预处理器移走,记号名称可能没进入记号表内。因此当#define的宏名称获得一个编译错误时,会引起困惑,浪费大量时间追踪错误。而AspectRatio肯定会被编译器看到 ?更小的代码量:对浮点数而言,使用常量可能比使用#define导致...

CONST - 相关标签