在c++可以定义一个const变量,然后把变量的值赋给一个非const指针,可以通过指针来改变const变量的值吗?下面的截图给出了答案…
const 和 let 的唯一区别就是用 const 声明的变量不能被重新赋值(只读变量),比如像下面这样就会报错: const foo = 1 foo = 2 // TypeError: Assignment to constant variable. 注:本文不会使用“常量”这个术语,因为我觉的这个术语容易有歧义:有些人把数字.字符串等这些不可改变的字面量称为常量,也有人把一些只读属性称为常量,比如 Math.PI,还有人把 ES6 里用 const 声明的变量称为常量.不过一般来说,这点歧…
先给出一段代码 class A { int *x; public: int *f() const { return x; } }; 成员函数f返回指向私有成员 x 的非常量指针,我认为这会修改成员x ,对吧? f 是 const成员函数,我应该在返回类型前面添加 const 吗? const成员函数应该保证的是,它不能更改任何数据成员. 就我而言,函数 f 并没有修改类A 的数据成员x ,但可以修改x 指向的内容,所以我的问题是,这是否违反了const函数应保证的内容? 回答: const 成员…
本文转自http://www.cnblogs.com/Fancyboy2004/archive/2008/12/23/1360810.html 看到const 关键字,C++程序员首先想到的可能是const 常量.这可不是良好的条件反射.如果只知道用const 定义常量,那么相当于把火药仅用于制作鞭炮.const 更大的魅力是它可以修饰函数的参数.返回值,甚至函数的定义体. const 是constant 的缩写,“恒定不变”的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能…
举个例子: 定义了一个类的const实例,怎么让他也能调用非能调用非const成员函数class foo{public:void test1() {cout << "I am not a const member function" << endl;}void test2()const {foo *temp = (foo*)this;//注意这个转换!!!temp->test1();}}; int main() {foo f;f.test2();retur…
先来看下面的例子: #include <stdlib.h> #include <string.h> #include <stdio.h> #pragma warning(disable:4996) typedef struct _Student { ]; int age; }Student; typedef struct _Teacher { ]; int age; char *p1; char **p2; Student s1; Student *ps1; }Teac…
#include <iostream> using namespace std; class A { public: int i; int j; } int main() { const A* a = new A(); A* a1; a1 = a; } 这个是有道理的,能够这么做的话,const中内容就会被改变.…
this指针: 1)对象中没有函数,只有成员变量 2)对象调用函数,通过this指针告诉函数是哪个对象自己谁. #include<iostream> using namespace std; class Shape { public: //void cal_display(Shape* this) void cal_display(){ display(); this->display(); } private: ; }; class Circle:public Shape { priv…
在c程序中,我们可能经常会使用到指针之间的赋值. 传统的赋值操作: char *cp = "c"; const char *ccp; ccp = cp; printf("*ccp:%c",*ccp); 会正常打印出*cpp所指的字符.但是下面的这段代码,就会出现问题: char **c = &cp; const char **cc; cc = c; printf("**cc:%c",**cc); 编译的时候提示,出现错误: >---…
const 的全局变量是储存在一个只读数据段中,虽然你可以定义一个指向它的指针,却会在运行时,在对该地址赋值的时候发生运行错误,而局部的const变量是储存在栈中的,离开作用域后同样会被释放,并且可以对指向该地址的指针进行赋值操作,但是不论是全局的const变量还是局部的const变量,都是以一个字符表的形式储存在某个位置,该变量本身是不可改变的,是没有分配内存的,所以即便对指向该地址的指针进行赋值,该const变量print出来的数值仍然是最初赋的值. 下面用代码来说明: 运行结果如下: 若我…