问题描述 为什么 const 和非 const 的汇编代码一样,const 的却能保证不被修改呢? <C++ Primer>第五版,中文版.145 页. const int i = 42;//int i = 42; cout << i << endl; const int *p = &i; *const_cast<int *>(p) = 0; cout << i << endl; const int i = 42; 与 int
问题描述 关于析构函数的问题:为什么将int* 赋值给含有int* 变量的class时会调用析构函数? 下面的代码: #include using namespace std; template class MyContainer { public: MyContainer(){ a = new T[n]; } MyContainer(T* b) :MyContainer() { for (int i = 0; i < n; i++) a[i] = b[i]; } MyContainer(con
问题描述 C语言中 int n = xx; 与 int n; n = xx; 这两种定义方式有什么不同? C语言中 int n = xx; 与 int n; n = xx; 这两种定义方式有什么不同? 解决方案 对于int等简单变量,建议给初始值,这不消耗cpu执行,又能确保程序正确,何乐不为? 解决方案二: 第一种是定义int变量同时赋予该变量初值 第二种是定义变量后,再赋初值 解决方案三: 应该是没有运行上的不同. 解决方案四: 比如 int n = xx; int a[n]; 与 int
问题描述 const int a=10; int *p =(int *)(&a); #include using namespace std ; int main () { const int a=10; int *p =(int *)(&a);//运行正常 为什么 int *p = &a 报错 cannot convert from 'const int *' to 'int *' 解决方案 因为是const int *,传给int *必须类型转换.之所以有这样的规定是为了防止程