为什么要这样写才可以赋值 ,这又是什么意思
我倒。。。哥 我只要你解释 const_cast 就行了。。。其他的我都知道 你这说的是什么
追答const int a =5; a显然是一个常变量
const_cast(&a); const_cast是C++标准转换符,
一、常量指针被转化成非常量指针,并且仍然指向原来的对象;
二、常量引用被转换成非常量引用,并且仍然指向原来的对象;
三、常量对象被转换成非常量对象。
如何将常量对象被转换成非常量对象。 求例子
追答class B { public: int m_iNum; B() {} }; void foo() { const B b1; //b1.m_iNum = 100; //compile error B b2 = const_cast(b1); /* 也可以做如下转换,体现出转换为指针类型 */ B *b3 = const_cast(&b1); /* 或者左侧也可以用引用类型,如果对b3或b4的数据成员做改变,就是对b1的值在做改变 */ B &b4 = const_cast(b1); b2. m_iNum = 200; //fine? } int main() { foo(); return 0; } 上面的代码编译时会报错,因为b1是一个常量对象,不能对它进行改变;
追问别百度了 这代码。。。我早看过了 根本不成功
c++中const_cast的问题
const_cast<int >(a)返回的是右值,不能被修改,改成 const_cast<int &>(a)才可以
程序中 常量的表示方式
例如定义一个int常量:const int a = 5;,这里 a 为 const int 类型。类型有const修饰时,编译器会对修改此数据的行为视为编译错误。因此把const数据作为常量使用。另外还有字符\/字符串字面量:类似'a'或"aaa"的字符\/字符串为字面量。字面量在C语言中不是常量(在C++中是常量),因为C语言标准...
在c++使用swap函数需要怎么样的头文件
使用swap函数需要#include<iostream>头文件。示例:include<iostream> \/\/usingnamespacestd;intmain(intargc,char*argv[]){ inta=5;intb=8;std::swap(a,b);std::cout<<a<<""<<b<<std::endl;return0;}
关于易语言错误10002
using namespace std;void main(){ const int length = 50;unsigned int a[length] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; \/\/高位在后 const int x = 10; \/\/需要转化为的进制 const int step = 256; \/\/原先的进制 int high = length - 1; \/\/值不为零的最大下标 ,...
c++类里定义的字符型数组const char a[5]怎么赋值?
在 c++ class 里,也 用 c 语言 的 同样 方法。只是 头文件 要包含:include<iostream> include <string> using namespace std;include <stdio.h> --- 程序例子:include<stdio.h> int main(){ const char a[5]={'X','Y','Z','1','2'};int i;for (i=0;i<5;i++) printf...
C语言的贪吃蛇源代码
#include<iostream>#include<windows.h>#include<time.h>#include<conio.h>using namespace std;void readini(FILE **fphead, int *score, char *argv[]) \/\/创建或打开一个和运行文件对应的ini文件,读取最高纪录{ char filename[200],*pfilename; int flag=-1,i; strcpy(filename,argv[0]); for(i...
#include<iostream> using namespace std; namespace a{ class c{ p...
三处改动,已注释:include<iostream> using namespace std;namespace a{ class c{ public:c():i(0){} c(int j):i(j){} ~c(){} int geti(){return i;} int seti(int j){i=j;} friend void func(const c&);private:int i;};void func(c&); \/\/增加声明 } void a::func(...
int main() { int a=5; cout<<a++<<++a<<a++<<endl; cout<<a<<endl...
第一个a++输出a的值5,然后自加1,a的值变为6;第二个++a先把a自加1值变为7,然后输出a的值7;第三个a++输出a的值7然后a自加1,其值变为8;最后 cout<<a<<endl;输出a的值8。
用C语言任意输入5个数,求其中的最大值,并打印输出。
#include<iostream> usingnamespacestd;int main(){ int a,b,c;cout<<"输入五个整数";cin>>a>>b>>c;if(a>b){ if(c>a)cout<<"最大整数是:"<<c<<endl;else cout<<"最大整数是:"<<a<<endl;} if(b>a){ if(c>b)cout<<"最大...
#include<iostream> #include<cmath> using namespac
cin>>c>>'\\t'这不行,>>'\\t'是错的。将空格键作为字符输入:在C语言中,可以用gets()函数,先定一个用于存字符串的数组 s][10] 再类似scanf的调用 gets(s) 这样除了回车以外的的字符串就都可以存入s中了