首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【计算机本科补全计划】C++ Primer:指针和const限定符

等同于对i赋值 *p=0ori=0; 9、 const限定符 整的来说,const的意思就是,我定义的这个东西,是雷打不动的,我这个对象,谁都不能动,除了对我进行修改,其他的你随意,但是如果你要通过别的方式妄图修改我...任何威胁到const对象的行为都会被当作错误反馈 还有一点,const必须初始化,不然我保护一个对象,对象都没有被初始化,我保护个蛋哟~~所以const是必须被初始化的,不然就报错。...11、 对const的引用 初始化和对const的引用 int i=42; const int &r1=i; 允许把一个常量引用绑定在一个非常量上,但是因为引用本身不是一个对象,所以我们没法通过r1引用限制...不变的是指针本身的值,而不是指针所指向的那个值: int numb=0; int *const err=&numb; const double pi=3.14; const double *const...看第四行,从pip出发从右往左看,const --常量,* -- 指针, double - 指向double类型的常量指针,const 说明指向一个常量。

63540
您找到你想要的搜索结果了吗?
是的
没有找到

【错误记录】C++ 字符串常量参数报错 ( 无法将参数 1 从“const char ”转换为“char *” | 从字符串文本转换将丢失 const 限定符 )

pause"); return 0; }; 报错信息 : 该报错是编译时报错 ; Test.cpp(12,13): error C2664: “void fun(char *)”: 无法将参数 1 从“const...char [6]”转换为“char *” Test.cpp(12,6): message : 从字符串文本转换将丢失 const 限定符(请参阅 /Zc:strictStrings) Test.cpp...006_Visual_Studio\HelloWorld\HelloWorld\Test.cpp(12,13): error C2664: “void fun(char *)”: 无法将参数 1 从“const...限定符(请参阅 /Zc:strictStrings) 1>D:\002_Project\006_Visual_Studio\HelloWorld\HelloWorld\Test.cpp(5,6): message...void fun(char* str) { cout << str << endl; } int main() { fun(const_cast("Hello")); //

47810

C++中const和非const对象分别调用const和非const成员函数

一、先来提出问题 const对象可以调用非const成员函数吗? 非const对象可以调用const成员函数吗? const成员函数内可以调用其它的非const成员函数吗?...非const成员函数内可以调用其他的const成员函数吗?...二、实践出真知 1、const对象可以调用const成员函数 2、const对象不能调用非const成员函数 3、非const对象可以调用const成员函数 4、非const对象可以调用非const成员函数...5、const成员函数不能调用非const成员函数 6、非const成员函数可以调用非const成员函数 我们知道c++在类的成员函数中还会隐式传入一个指向当前对象的this指针,所以在test类中,...(),翻译了一下,同样const成员函数也要翻译,void print()const; 可以翻译成 void print(const test* this);,那么常量对象的地址翻译是const test

1.1K20

【错误记录】set 集合容器仿函数报错 ( 具有类型“const IntCompare”的表达式会丢失一些 const-volatile 限定符以调用“bool IntCompare::oper“ )

IntCompare”的表达式会丢失一些 const-volatile 限定符以调用“bool IntCompare::operator ()(const int &,const int &)” HelloWorld...和 volatile 是 C++ 中的两个关键字 , 它们通常用于修饰变量或函数 ; 这两个限定符的作用和用途不同 , 但在某些情况下可以一起使用 ; const 关键字用于表明某个变量的值不能被修改...一起使用时 , const-volatile 限定符 , 它们表示这个变量是常量并且可能会被外部因素改变 ; 报错信息中说明 , 调用 bool IntCompare::operator ()(const...int &,const int &) 函数时 , 可能会丢失 const-volatile 限定符 ; 使用 const volatile 修饰这个函数 ; 修改后的仿函数如下 : struct IntCompare...{ bool operator()(const int& a, const int& b) const volatile { return (a < b); // 降序排序 } }; 三、

11010

【C++】const对象和const成员

const对象 定义类对象时可以将其指定为const对象。定义后const对象不能再被修改。 const对象不能调用非const类型的成员函数。...如果一个对象被定义成const对象,那么它就不能调用这个类中的非const成员函数。 const对象调用的成员函数一定都得是const!...//const const CTime time4(10); CTime const time5; 如果你用const对象引用了这个类中的非const成员函数,就会报错: 错误 1 error C2662...3.const成员函数 const成员函数只能被const对象引用。const成员函数内可以引用const数据成员,也可以引用非const数据成员,但不能修改非const数据成员的值。...int getNum() const; 对于const函数的外部定义,也需要写const限定符 int CTime::getNum() const { return num; } const成员函数存在的意义在于它能被

1.1K10

const 详解

一、const变量         1、限定符声明变量只能被读    const int i=5;    int j=0;    ……    i=j;  //非法,导致编译错误    j=i...;  //合法    2、 必须初始化    const int i=5;    //合法    const int j;      //非法,导致编译错误    3、在另一连接文件中引用const...常量    extern const int i;    //合法    extern const int j=10;  //非法,常量不可以被再次赋值    4、便于进行类型检查    用const...困惑,看到const关键字,C++程序员首先想到的可能是const常量,如果只知道用const定义是常量,那么相当于把火药仅用于制作鞭炮。...所以很多C++程序设计书籍建议:"Use const whenever you need"。 二、const成员函数     任何不会修改数据成员的函数都应该声明为const类型。

97110

const指南

基本词义  意思就就是说利用const进行修饰的变量的值在程序的任意位置将不能再被修改,就如同常数一样使用! ...使用方法 const int a=1;//这里定义了一个int类型的const常数变量a; 但对于指针来说const仍然是起作用的,以下有两点要十分注意,因为下面的两个问题很容易混淆! ...int a=10; int b=20; const int *pi; pi=a; cout <<*pi << "|" << a <<endl; pi=b; cout <<*pi...<< "|" <<b <<endl; cin.get(); } 上面的代码中最重要的一句是 const int *pi  这句从右向左读作: pi是一个指向int类型的,被定义成const...int *const pi=a; cout <<*pi << "|" <<a <<endl; cin.get(); } 上面的代码中最重要的一句是 const int *const pi

641100

const详解

基本概念 const名叫常量限定符,用来限定特定变量,以通知编译器该变量是不可修改的。习惯性的使用const,可以避免在函数中对某些不应修改的变量造成可能的改动。...3.2 const修饰函数返回值 修饰返回值,就是不能修改返回值 对于函数来说,返回值如果是int类型的值,就算用const限定,但是函数调用结束会清楚栈,因此没有必要 如果函数返回值是指针的话,我们加上限定符号...,接收的变量也必须有限定符 const char * func(); const char* str = func(); 如果返回值是引用,也可以提高效率。...;//const }; const函数 const 对象只能访问const 成员函数,非const 的对象可以访问任何成员函数,包括const 成员函数。...如果函数名、参数、返回值都相同的const成员函数和非const成员函数是可以构成重载,那么const对象调用const成员函数,非const对象默认调用非const的成员函数。

17230

1.C和C++区别,以及const分析(底层const顶层const)

注意:const变量不能被直接赋值,但是可以通过指针来修改const变量....由于const局部变量会存在栈里,而const全局变量会存在只读存储内存上 所以我们可以通过指针来修改const局部变量,但是修改const全局变量,会使程序崩溃. 2.2修改const实例 1)实例1...-通过指针来修改const局部变量 代码如下: #include int main() { const int c = 0; //const局部变量 int* p...C++中的const 3.1 介绍 在C++中,const变量则是真正的常量了,定义时会将其放入符号表中. 所以编译途中遇到使用const变量时,则直接从符号表中取出常量....指针const分为两种: 底层const, 顶层const (普通变量的const(或引用)永远是顶层const,也就是说,const int 和int const本质都一样) 1)底层const(位于

81320

this指针和const

关键字在C语言中的应用 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被修改的 const的普通用法 int const index = 10; //const修饰的变量不能被修改...; temp = 10; //给变量赋值 这个在C语言的 基本数据类型 里面有说过 const修饰指针 常量指针 const修饰 *p int const *p; //const修饰...*p const int* p; //常量指针 不能通过指针修改p指向的内容(不能修改指向的内容) 指针常量 const 修饰 p int temp =10; int* const p = &...temp; //指针常量 不能修改p的指向 且必须初始化 const用于函数的形参 void fun(const int *p); const用于形参时说明了形参在函数内部不会被改变 const关键字在...:fun 常成员函数不能调用非常成员函数的原因: 是因为this指针的修饰符不同,在const成员函数里面的this指针被const修饰,在const成员函数里面调用非const成员函数时,相当于将const

1.4K30
领券