关于C++中的const问题

C \u8bed\u8a00 const \u95ee\u9898

char const * source \u8fd9\u53e5\u8bdd\u7684\u610f\u601d\u662f\uff0c*source \u4e0d\u53ef\u53d8\uff0c\u800csource \u53ef\u53d8\u3002
\u4e5f\u5c31\u662f\u6307\u9488\u6307\u5411\u7684\u5730\u5740\u91cc\u9762\u7684\u5185\u5bb9\u4e0d\u53ef\u53d8\uff0c\u4f46\u6307\u9488\u662f\u53ef\u4ee5\u8d4b\u5176\u4ed6\u503c\u7684

source\u662f\u6307\u5411\u5e38\u91cf\u7684\u6307\u9488\uff0cp\u662f\u666e\u901a\u6307\u9488\uff0c\u8fd9\u6837\u8d4b\u503c\u540e\uff0c\u5c31\u53ef\u4ee5\u6539\u53d8p\u6307\u5411\u5730\u5740\u91cc\u9762\u7684\u5185\u5bb9
\u6240\u4ee5\uff0c\u7f16\u8bd1\u65f6\u4f1a\u63d0\u793a\u8b66\u544a\u7684

\u901a\u5e38\uff0c\u6211\u4eec\u5f3a\u5236\u8f6c\u6362\uff0c\u6765\u4f7f\u5f97\u7f16\u8bd1\u901a\u8fc7\u3002\u5982\uff1achar * p=(char*)source;


\u8865\u5145\uff1a
char * p=(char*)source; \u8fd9\u53e5\u5c31\u662f\u5f3a\u5236\u8f6c\u6362

C\u4e2d\u7684const\uff0c\u529f\u80fd\u6bd4\u8f83\u5355\u4e00\uff0c\u8f83\u5bb9\u6613\u7406\u89e3\uff1a
\u4f5c\u7528\uff1a\u88ab\u4fee\u9970\u7684\u5185\u5bb9\u4e0d\u53ef\u66f4\u6539\u3002
\u4f7f\u7528\u573a\u5408\uff1a \u4fee\u9970\u53d8\u91cf\uff0c\u51fd\u6570\u53c2\u6570\uff0c\u8fd4\u56de\u503c\u7b49\u3002\uff08c++\u4e2d\u5e94\u7528\u573a\u5408\u8981\u4e30\u5bcc\u7684\u591a\uff09
\u7279\u70b9\uff1a \u662f\u8fd0\u884c\u65f6const\uff0c\u56e0\u6b64\u4e0d\u80fd\u53d6\u4ee3#define\u7528\u4e8e\u6210\u4e3a\u6570\u7ec4\u957f\u5ea6\u7b49\u9700\u8981\u7f16\u8bd1\u65f6\u5e38\u91cf\u7684\u60c5\u51b5\u3002\u540c\u65f6\u56e0\u4e3a\u662f\u8fd0\u884c\u65f6const\uff0c\u53ef\u4ee5\u53ea\u5b9a\u4e49\u800c\u4e0d\u521d\u59cb\u5316,\u800c\u5728\u8fd0\u884c\u65f6\u521d\u59cb\u5316\u3002\u5982 const int iConst;\u3002 \u53e6\u5916\uff0c\u5728c\u4e2d\uff0cconst\u53d8\u91cf\u9ed8\u8ba4\u662f\u5916\u90e8\u94fe\u63a5\uff0c\u56e0\u6b64\u5728\u4e0d\u540c\u7684\u7f16\u8bd1\u5355\u5143\u4e2d\u5982\u679c\u6709\u540c\u540dconst\u53d8\u91cf\uff0c\u4f1a\u5f15\u53d1\u547d\u540d\u51b2\u7a81\uff0c\u7f16\u8bd1\u65f6\u62a5\u9519\u3002
c++\u4e2d\u7684const\uff1a\u8ddfc\u4e2d\u6bd4\u8f83\uff0c\u5185\u5bb9\u8981\u4e30\u5bcc\u5f88\u591a\uff0c\u5f53\u7136\uff0c\u4f5c\u7528\u4e5f\u66f4\u5927\u4e86
1\uff1a\u975e\u7c7b\u6210\u5458const
*\u5728c++\u4e2d\uff0cconst\u53d8\u91cf\uff08\u5728\u8fd9\u91cc\u6d89\u53ca\u7684const\u90fd\u4e0d\u662f\u7c7b\u4e2d\u7684const\uff0c\u7c7b\u4e2d\u7684const\u4e13\u95e8\u63d0\u51fa\u6765\u8bb0\u5f55\uff09\u9ed8\u8ba4\u662f\u5185\u90e8\u8fde\u63a5\u7684\uff0c\u56e0\u6b64\u5728\u4e0d\u540c\u7684\u7f16\u8bd1\u5355\u5143\u4e2d\u53ef\u4ee5\u6709\u540c\u540d\u7684const \u53d8\u91cf\u5b9a\u4e49\u3002
*\u662f\u7f16\u8bd1\u65f6\u5e38\u91cf\uff0c\u56e0\u6b64\u53ef\u4ee5\u50cf#define\u4e00\u6837\u4f7f\u7528\uff0c\u800c\u4e14\u56e0\u4e3a\u4e0a\u9762\u4e00\u70b9\uff0c\u53ef\u4ee5\u5728\u5934\u6587\u4ef6\u4e2d\u5b9a\u4e49const\u53d8\u91cf\uff0c\u5305\u542b\u7684\u4e0d\u540c\u7684cpp\u6587\u4ef6\uff08\u7f16\u8bd1\u5355\u5143\uff09\u4e2d\u4f7f\u7528\u800c\u4e0d\u5f15\u8d77\u547d\u540d\u51b2\u7a81\u3002
*\u7f16\u8bd1\u5668\u9ed8\u8ba4\u4e0d\u4e3aconst\u53d8\u91cf\u5206\u914d\u5185\u5b58\uff0c\u9664\u975e\uff1a1. \u4f7f\u7528 extern \u7533\u660e\uff0c 2\uff1a\u7a0b\u5e8f\u4e2d\u6709\u5f15\u7528const \u53d8\u91cf\u7684\u5730\u5740\u3002
* \u53ef\u4ee5\u4f7f\u7528\u4e0b\u9762\u7684\u7c7b\u578b\u8f6c\u6362\uff08\u4e0d\u5b89\u5168\u7684\uff09\uff1a 1: int * = (int *)pConst 2: int * = const_castpConst(c++\u89e3const\u5c5e\u6027cast)
* \u51fd\u6570\u53c2\u6570\u6216\u8005\u8fd4\u56de\u503c\u80fd\u4f7f\u7528 const & or const * \u65f6\uff0c\u5c3d\u91cf\u4f7f\u7528const\u5c5e\u6027\uff0c\u589e\u5f3a\u7a0b\u5e8f\u5065\u5168\u6027\u3002
*c++\u4e2d\u4e34\u65f6\u5bf9\u8c61/\u5185\u7f6e\u53d8\u91cf\u9ed8\u8ba4\u5177\u6709const\u5c5e\u6027
2\uff1a\u7c7b\u4e2d\u7684const
*\u7c7b\u4e2d\u7684const\u4e0ec\u8bed\u8a00\u4e2d\u7684const\u4e00\u6837\uff0c\u53ea\u662f\u8fd0\u884c\u65f6\u5e38\u91cf\uff0c\u4e0d\u80fd\u4f5c\u4e3a\u6570\u7ec4\u7ef4\u6570\u4f7f\u7528\uff0c\u5373\u4e0d\u80fd\u53d6\u4ee3#define\u3002\u5728\u7c7b\u4e2d\u4f7f\u7528\u4e0b\u9762\u4e24\u79cd\u65b9\u5f0f\u53d6\u4ee3#define\uff1a 1\uff1astatic const... 2: enum{....}//enum \u4e0d\u5360\u5b58\u50a8\u7a7a\u95f4
*\u7c7b\u4e2d\u7684const \u53d8\u91cf\u5360\u7528\u5b58\u50a8\u7a7a\u95f4
*\u7c7b\u4e2d\u7684const\u6210\u5458\u53d8\u91cf\u9700\u8981\u5728\u6784\u9020\u51fd\u6570\u521d\u59cb\u5316\u5217\u8868\u4e2d\u521d\u59cb\u5316
*const \u5bf9\u8c61\uff1a\u5728\u8be5\u5bf9\u8c61\u751f\u547d\u5468\u671f\u5185\uff0c\u5fc5\u987b\u4fdd\u8bc1\u6ca1\u6709\u4efb\u4f55\u6210\u5458\u53d8\u91cf\u88ab\u6539\u53d8\u3002const\u5bf9\u8c61\u53ea\u80fd\u8c03\u7528const\u6210\u5458\u51fd\u6570\u3002
*const\u6210\u5458\u51fd\u6570\uff1a void fun() const ... \u4e0d\u4ec5\u80fd\u88abconst\u5bf9\u8c61\u8c03\u7528\uff0c\u4e5f\u80fd\u88ab\u975econst\u5bf9\u8c61\u8c03\u7528\uff0c\u56e0\u6b64\uff0c\u5982\u679c\u786e\u8ba4\u4e00\u4e2a\u4efb\u4f55\u6210\u5458\u51fd\u6570\u4e0d\u6539\u53d8\u4efb\u4f55\u6210\u5458\u53d8\u91cf\uff0c\u5e94\u8be5\u4e60\u60ef\u6027\u5c06\u8be5\u51fd\u6570\u5b9a\u4e49\u6210const\u7c7b\u578b\u3002 \u5982\u679cconst\u6210\u5458\u51fd\u6570\u9700\u8981\u6539\u53d8\u6210\u5458\u53d8\u91cf\uff0c\u6709\u4e24\u79cd\u5b9e\u73b0\u65b9\u5f0f\uff1a 1 \uff0cconst_cast this\u5f3a\u5236\u53d6\u6d88this\u6307\u9488\u7684const\u5c5e\u6027\u3002 2\uff1a\u5c06\u88ab\u6539\u53d8\u7684\u6210\u5458\u53d8\u91cf\u5b9a\u4e49\u6210mutable\uff1amutable int i; //\u5e94\u6c38\u8fdc\u53ea\u4f7f\u7528\u7b2c\u4e8c\u79cd\u65b9\u6cd5\uff0c\u8ba9\u4efb\u4f55\u9605\u8bfb\u7a0b\u5e8f\u7684\u4eba\u90fd\u77e5\u9053\u8be5\u53d8\u91cf\u53ef\u80fd\u88abconst\u51fd\u6570\u6539\u53d8\u3002
*\u5982\u679c\u4e00\u4e2a\u5bf9\u8c61\u88ab\u5b9a\u4e49\u6210const\uff0c\u90a3\u4e48\u8be5const\u5bf9\u8c61\u201c\u53ef\u80fd\u201d\u4f1a\u88ab\u653e\u5165\u5230ROM\u5f53\u4e2d\uff0c\u8fd9\u5728\u5d4c\u5165\u5f0f\u5f00\u53d1\u5f53\u4e2d\u6709\u65f6\u975e\u5e38\u91cd\u8981\u3002\u3002\u3002\u3002\uff08\u4e0d\u80fd\u6709\u4efb\u4f55\u81ea\u5b9a\u4e49\u7684constructor \u548cdestructor\u3002\u5b83\u7684\u57fa\u7c7b\u6216\u8005\u6210\u5458\u5bf9\u8c61\u4e0d\u80fd\u6709\u81ea\u5b9a\u4e49\u7684constructor\u548cdestructor\uff0c\u4e0d\u80fd\u6709\u4efb\u4f55mutable\u6210\u5458\u53d8\u91cf\uff09

C++中CONST
(一)简单介绍,把握全局
const与define,指针,引用,函数,类成员
1.》》const与define。两者都可以用来定义常量,但是const定义时,定义了常量的类型,所以更精确一些。#define只是简单的文本替换,除了可以定义常量外,还可以用来定义一些简单的函数,有点类似内置函数。const和define定义的常量可以放在头文件里面。(小注:可以多次声明,但只能定义一次)
2.》》const与指针和引用。
(a)const与指针。
先来看看下面的几种定义:
int me;
const int * p1=&me;//p1可变,*p1不可变,但是不能用*p1来修改,p1可以转向
int * const p2=&me;//p2不可变,*p2可变,此时允许*p2来修改其值,但是p2不能转向。
const int *const p3=&me;//p3不可变,*p3也不可变,此时既不能用*p3来修改其值,也不能转向
第一个const的意思是对p1来讲它指向的就是const常量,虽然me不是,但是对p1来说就是。
(b)指针和引用的的区别很简单,就是引用更简洁,更安全。因为引用声明是必须初始化。 引用更接近const指针,一旦与某个变量关联,就将一直效忠于他。
(c)const指针可以接受const和非const地址,但是非const指针只能接受非const地址。所以const指针的能力更强一些,所以尽量多用const指针,这是一种习惯。
3.》》(a)const与函数。由于 c,所以经常把函数的形参类型设为const,而且多为const 引用。但是这里有一个限制,不能把不是左值的地址传递给引用。(左值包括变量,数组元素,结构成员,引用,被解除引用的指针等)。 形参是const类型的,说明该函数将不会修改其值,该函数便为const函数是。
(b)const与类成员函数。先看看下面这段代码:
const Stock land =Stock("hyd");
land.show();
land 是常量,但是类成员函数show无法保证不修改land,所以编译器将拒绝执行该段代码。除非你能保证show像const函数一样,但这需要另外一种语法,即:
void show() const;(声明)
void Stock::show() const{}(定义)。
(二)详细介绍,注重细节
C中常用:“ #define 变量名 变量值”定义一个值替代,然而却有个致命缺点:缺乏类型检测机制,这样预处理在C++中成为可能引发错误的隐患,于是引入const.
const使用:
1. 用于指针的两种情况:const是一个左结合的类型修饰符.
int const *A; //A可变,*A不可变
int *const A; //A不可变,*A可变
2.限定函数的传递值参数:
void function(const int Var); //传递过来的参数在函数内不可以改变.
3.限定函数返回值型.
const int function(); //此时const无意义
const myclassname function(); //函数返回自定义类型myclassname.
4限定函数类型.
void function()const; //常成员函数, Const成员函数不能改变对象的成员函数。
例如:
int Point::GetY()
{
return yVal;
}
这个函数被调用时,不改变Point对象,而下面的函数改变Point对象:
void Point:: SetPt (int x, int y)
{
xVal=x;
yVal=y;
}
为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数的函数原型中加上const说明:
class Point
{
public:
int GetX() const;
int GetY() const;

void SetPt (int, int);
void OffsetPt (int, int);
private:
int xVal, yVal;
};
const成员函数应该在函数原型说明和函数定义中都增加const限定:
int Point::GetY() const
{
return yVal;
}
class Set {
public:
Set (void){ card = 0; }
bool Member(const int) const;
void AddElem(const int);
//...
};
bool Set::Member (const int elem) const
{
//...
}
非常量成员函数不能被常量成员对象调用,因为它可能企图修改常量的数据成员:
const Set s;
s.AddElem(10); // 非法: AddElem不是常量成员函数
s.Member(10); // 正确
*******但构造函数和析构函数对这个规则例外,它们从不定义为常量成员,但可被常量对象调用(被自动调用)。它们也能给常量的数据成员赋值,除非数据成员本身是常量。
为什么需要const成员函数?
我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。
const成员函数和const对象
实际上,const成员函数还有另外一项作用,即常量对象相关。对于内置的数据类型,我们可以定义它们的常量,用户自定义的类也一样,可以定义它们的常量对象。例如,定义一个整型常量的方法为:
const int i=1 ;
同样,也可以定义常量对象,假定有一个类classA,定义该类的常量对象的方法为:
const classA a(2);
这里,a是类classA的一个const对象,"2"传给它的构造函数参数。const对象的数据成员在对象寿命期内不能改变。但是,如何保证该类的数据成员不被改变呢?
为了确保const对象的数据成员不会被改变,在C++中,const对象只能调用const成员函数。如果一个成员函数实际上没有对数据成员作任何形式的修改,但是它没有被const关键字限定的,也不能被常量对象调用。下面通过一个例子来说明这个问题:
class C
{
int X;
public:
int GetX()
{
return X;
}
void SetX(int X)
{
this->X = X;
}
};
void main()
{

const C constC;
cout<<constC.GetX();
}
如果我们编译上面的程序代码,编译器会出现错误提示:constC是个常量对象,它只能调用const成员函数。虽然GetX( )函数实际上并没有改变数据成员X,由于没有const关键字限定,所以仍旧不能被constC对象调用。如果我们将上述代码中:
int GetX()
改写成:
int GetX()const
再重新编译,就没有问题了。
const成员函数的使用
const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义const成员函数时,把const关键字放在函数的参数表和函数体之间。有人可能会问:为什么不将const放在函数声明前呢?因为这样做意味着函数的返回值是常量,意义完全不同。下面是定义const成员函数的一个实例:
class X
{
int i;
public:
int f() const;
};
关键字const必须用同样的方式重复出现在函数实现里,否则编译器会把它看成一个不同的函数:
int X::f() const
{
return i;
}
如果f( )试图用任何方式改变i或调用另一个非const成员函数,编译器将给出错误信息。任何不修改成员数据的函数都应该声明为const函数,这样有助于提高程序的可读性和可靠性。

使用const限定的成员函数不能改变类的成员变量的值,主要是为了保护成员变量不在该函数中被更改。

例如,有一个成员变量int a,获得成员变量a的函数
int void get_A()const;
这里const表示get_A这个函数不能够更改类的成员变量的值,但是可以使用,所以这时如果get_A的实现是:
int void get_A() {
return a;
}
这样就不会出错,而如果是:
int void get_A() {
a=1;
return a;
}
这样就会报错,因为函数改变了成员变量的值。

const限定函数的作用是在大型工程中保证封装性,不能随意暴露成员变量,成员变量的更改必须保证在特定函数,使用特定方法,只有这样,才能保证软件的安全性。

首先说一下软件工程的一个最基本原则:最小特权原则.讲对象声明为const有助于贯彻最小特权原则,若想修改对象会被编译器发现。
修改对象的数据成员的成员函数不能定义为const,那样导致编译错误。
定义为const的成员函数如果调用同一类的同一实例的非const成员函数,将导致编译错误
对于const对象,c++编译器不允许对成员函数进行调用,除非成员函数本身也是也声明为const。
至于程序写起来太麻烦,你把我写的多看几遍就明白了

const就是限定的意思。
const int i=10;说明i在接下来的使用都不能改变值。
void function()const; 限定了以后说明这个函数无法修改变量和返回值。当然void是无返回值的。

简单点说,使用const是为了方便搞错,而不是让你搞混。 所以真的需要的时候再用它。

返回const,则调用时也必须声明为const,防止返回的指针内容被修改。

  • const鍦╟璇█涓殑鐢ㄦ硶
    绛旓細璇ヨ瑷涓昏鐢ㄩ旀槸瀹氫箟甯搁噺锛屽嵆涓嶅彲淇敼鐨勫彉閲忋const鍙互鐢ㄦ潵瀹氫箟甯搁噺锛屽嵆鍦ㄧ▼搴忚繍琛屾湡闂村叾鍊间笉鑳芥敼鍙樼殑鍙橀噺銆備緥濡傦紝const int MAX_VALUE =100锛 瀹氫箟浜嗕竴涓悕涓篗AX_VALUE鐨勫父閲忥紝鍏跺间负100锛屼笖杩欎釜鍊煎湪绋嬪簭杩愯鏈熼棿涓嶈兘琚敼鍙樸俢onst涔熷彲浠ヤ笌鎸囬拡涓璧蜂娇鐢紝浠ラ槻姝㈡寚閽堟寚鍚戠殑鍊艰淇敼銆傚湪鍑芥暟鍙傛暟涓娇鐢...
  • c璇█const闂
    绛旓細涓婇潰鐨勬垜灏变笉璇翠簡锛屾垜鎯充綘涔熸槑鐧戒簡锛涙垜瑙i噴涓涓嬩綘鐨勮ˉ鍏闂锛氶鍏堬紝浣犲畾涔変簡涓涓猧nt绫诲瀷鐨勬暣褰锛屽張瀹氫箟浜嗕竴涓寚閽堬紝杩欎釜鎸囬拡鐨勬寚鍚戝彲浠ユ敼鍙橈紝浣嗘槸瀹冪殑姣忎竴涓寚鍚戠殑鍐呭锛堟暣褰㈤噺锛夊嵈涓嶈兘鏀瑰彉锛岃繖璧峰埌淇濇姢鏁版嵁鐨勪綔鐢 鐒跺悗锛屼綘鎶婁笂闈㈠畾涔夎繃鐨刟鐨勫湴鍧璧嬬粰浜嗚繖涓寚閽堝嵆锛岃繖涓寚閽堟寚鍚戜簡杩欎釜鏁村舰閲忔墍鍦ㄧ殑...
  • 鍏充簬c璇█const鐨鐨勪竴浜闂?
    绛旓細int const * p鍙槸闄愬埗浣犻氳繃p鎸囬拡鍘讳慨鏀瑰唴瀛橈紝浣嗘槸涓嶄細鎶妏鎸囧悜鐨勫唴瀛樺彉涓哄彧璇 涔熷氨璇磋 p =2;//闈炴硶锛屽父鎸囬拡琚慨鏀 b = 2;//鍚堟硶锛宐涓嶆槸甯搁噺
  • C璇█涓殑const鏄榄旀剰鎬?
    绛旓細闂锛const鍙橀噺 & 瀛楃涓插父閲2 璇烽棶char a[3] = "abc" 鍚堟硶鍚楋紵浣跨敤瀹冩湁浠涔堥殣鎮o紵绛旀涓庡垎鏋愶細鍦ㄦ爣鍑C涓繖鏄悎娉曠殑锛屼絾鏄畠鐨勭敓瀛樼幆澧冮潪甯哥嫮灏忥紱瀹冨畾涔変竴涓ぇ灏忎负3鐨勬暟缁勶紝鍒濆鍖栦负鈥渁bc鈥濓紝锛屾敞鎰忥紝瀹冩病鏈夐氬父鐨勫瓧绗︿覆缁堟绗'\0'锛屽洜姝よ繖涓暟缁勫彧鏄湅璧锋潵鍍廋璇█涓殑瀛楃涓诧紝瀹炶川涓婂嵈涓嶆槸...
  • c涓const鏄粈涔堟剰鎬
    绛旓細const鍏抽敭瀛楃殑浼樼偣鏄槑鏄剧殑銆傞鍏堬紝浣跨敤const鍙互甯姪绋嬪簭鍛樻娴嬮敊璇備緥濡傦紝鍦ㄥ嚱鏁板0鏄庢垨鎸囬拡绫诲瀷涓娇鐢╟onst鍏抽敭瀛楀彲浠ュぇ澶у噺灏戝洜涓哄弬鏁颁紶閫掗敊璇垨鍐呭瓨娉勬紡鑰屽鑷鐨勯棶棰銆傚叾娆★紝浣跨敤const鍏抽敭瀛楀彲浠ヤ娇绋嬪簭鐨勫彲璇绘ф洿楂橈紝鍥犱负瀹冨彲浠ユ竻妤氬湴琛ㄦ槑鍝簺鍊兼槸涓嶆洿鏀圭殑銆傛渶鍚庯紝浣跨敤const鍙互鎻愰珮绋嬪簭鐨勫畨鍏ㄦэ紝鍥犱负瀹冨彲浠...
  • C璇█涓 const鍙互鐩存帴淇グ鏁版嵁绫诲瀷鍚?
    绛旓細涓嬮潰鎴戜滑鐪嬩竴涓緥瀛: class A { public: ... A f(const A& a); ... }; 濡傛灉閲囩敤鎶借薄const杩涜瑙i噴,閭e氨鏄痜鍑芥暟涓嶄細鍘绘敼鍙樻墍寮曠敤瀵硅薄鐨勬娊璞″,濡傛灉閲囩敤浣嶅厓const杩涜瑙i噴,閭e氨鎴愪簡f鍑芥暟涓嶄細鍘绘敼鍙樻墍寮曠敤瀵硅薄鐨勪换浣曚綅鍏冦 鎴戜滑鍙互鐪嬪埌浣嶅厓瑙i噴姝f槸c++瀵const闂鐨勫畾涔,const鎴愬憳鍑芥暟涓嶈鍏佽淇敼瀹冩墍鍦...
  • c璇█const鎸囬拡閿欒鏄粈涔堝師鍥?
    绛旓細鏄竴涓瓧绗︽寚閽(char*)璧嬬粰浜嗕竴涓瓧绗﹀瀷(char)鍙橀噺锛屽鑷存姤閿欍備緥濡傦細string s = "abc";char* c = s.c_str();杩欐椂浼氭姤閿欙細invalid conversion from `const char*' to `char*'瑙e喅鏂规硶锛 char* c = const_cast<char *>(s.c_str());...
  • C 璇█ const 闂
    绛旓細char const * source 杩欏彞璇濈殑鎰忔濇槸锛*source 涓嶅彲鍙橈紝鑰宻ource 鍙彉銆備篃灏辨槸鎸囬拡鎸囧悜鐨勫湴鍧閲岄潰鐨勫唴瀹逛笉鍙彉锛屼絾鎸囬拡鏄彲浠ヨ祴鍏朵粬鍊肩殑 source鏄寚鍚戝父閲忕殑鎸囬拡锛宲鏄櫘閫氭寚閽堬紝杩欐牱璧嬪煎悗锛屽氨鍙互鏀瑰彉p鎸囧悜鍦板潃閲岄潰鐨勫唴瀹 鎵浠ワ紝缂栬瘧鏃朵細鎻愮ず璀﹀憡鐨 閫氬父锛屾垜浠己鍒惰浆鎹紝鏉ヤ娇寰楃紪璇戦氳繃銆傚锛歝har * p...
  • c璇█涓殑const鐨勫尯鍒?
    绛旓細涓銆佸尯鍒涓嬶細1銆乮nt瀹氫箟鐨勯噺鏄彉閲忥紝瀹冪殑鍊煎彲浠ユ洿鏀癸紱鑰const int 瀹氫箟鐨勬槸涓涓父閲忥紝瀹冪殑鍊间笉鍙互鏇存敼銆2銆乮nt鍦ㄥ畾涔夌殑鏃跺欙紝涓嶉渶瑕佸垵濮嬪寲锛岃宑onst int 鍦ㄥ畾涔夌殑鏃跺欏繀椤诲垵濮嬪寲锛涗簩銆乧onst鐨勪綔鐢細鎶婂璞¤浆鎹㈡垚涓涓父閲
  • C璇█涓,const濡備綍淇グ鍏ㄥ眬鍙橀噺銆佸眬閮ㄥ彉閲?鏈変粈涔堝ソ澶?
    绛旓細const鏄父閲忛檺鍒朵慨楗板叧閿瓧锛岃繖閲屼妇渚嬪父鐢ㄧ殑浣滅敤銆備竴锛庡彲浠ュ畾涔夊父閲忓锛歝onst int var = 7;鍗硋ar涓嶅彲鍐欍備絾鍦C浠g爜涓紝鍒欏彧鐢#define鎸囩ず瀹氫箟甯搁噺銆備簩锛庢洿澶氱殑锛屼篃鍙互琛ㄦ槑锛堜慨楗帮級鍑芥暟鍏ュ彛鍙傛暟濡傦細char *strcpy(char *dest, const char *src);闃呰杩欎釜鍑芥暟澹版槑鏃讹紝棣栧厛缁撳悎鍙傛暟鍛藉悕銆佺劧鍚庢牴鎹甤onst灏...
  • 扩展阅读:扫一扫题目出答案 ... c++面试常见问题及答案 ... c++教程 ... c++关键字表 ... c++编程 ... c++是什么意思 ... c++中<< ... c++中const的用法 ... 怎么修复c++系统运行库 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网