error C2131: 表达式的计算结果不是常数

 #include <iostream>
using namespace std; void main()
{
const int class_size = ;
int finalGrade[class_size]; int a = ;
int arr[a];//error C2131: 表达式的计算结果不是常数 int x;
std::cin >> x;
const int size = x;
double classAverage[size];//error C2131: 表达式的计算结果不是常数 system("pause");
}

指向常量的指针

const int * p;

常量指针

int x=5;

int * const p=&x;

指向常量的常量指针

int x=2;

const int * const p=&x;

error C3892: “s1”: 不能给常量赋值

 #include <iostream>
using namespace std; void main()
{
const char * s1 = "hello world";
char s2[] = "hello world"; std::cout << s1 << std::endl;
std::cout << s2 << std::endl; s1[] = 'a';//error C3892: “s1”: 不能给常量赋值
s2[] = 'a'; std::cout << s1 << std::endl;
std::cout << s2 << std::endl; printf("s1=%p\n", &s1);
printf("s2=%p\n", &s2); system("pause");
}

const对象

1常量成员

2常引用作为函数参数

3常对象

类名 const 对象名(参数表);//必须初始化

4常成员函数

类型标识符 函数名(参数列表) const;

 #include <iostream>
using namespace std; class A
{
const int i;
public:
A() :i()
{ }
void f()
{
std::cout << "f()" << std::endl;
}
void f() const
{
std::cout << "f() const" << std::endl;
}
}; void main()
{
const A a;
a.f(); A a1;
a1.f(); system("pause");
}

在常成员函数里,不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数。如果将一个对象说明为常对象,则通过该对象只能调用它的const成员函数,不能调用其它成员函数。

面向对象程序设计-C++_课时19const_课时20不可修改的的更多相关文章

  1. 面向对象程序设计-C++_课时18内联函数

    使用inline说明的函数称内联函数. 在C++中,除具有循环语句.switch语句的函数不能说明为内联函数外,其他函数都可以说明为内联函数. #include <iostream> us ...

  2. 面向对象程序设计-C++_课时30运算符重载——基本规则_课时31运算符重载——原型_课时32运算符重载——赋值_课时33运算符重载——类型转换

    区分初始化,赋值 #include <iostream> using namespace std; class Fi { public: Fi() {}//1构造函数 }; class F ...

  3. 面向对象程序设计-C++_课时28静态对象_课时29静态成员

    Static in C++ Two basic meanings Static Storage --allocated once at a fixed address Visibility of a ...

  4. 面向对象程序设计-C++_课时26拷贝构造Ⅰ_课时27拷贝构造Ⅱ

    一旦写了一个类,给它3个函数: 1default construtor 2virtual destructor 3copy constructor Constructions vs. assignme ...

  5. 面向对象程序设计-C++_课时24多态的实现

    所有带virtual的类的对象,里面最上面有一个隐藏的指针vptr,指向一张表vtable #include <iostream> using namespace std; class A ...

  6. 面向对象程序设计-C++_课时22向上造型

    赋值兼容规则是指在公有派生情况下,一个派生类的对象可以作为基类的对象来使用的情况. 约定类derived是从类base公有派生而来的,则指如下3种情况: (1)派生的对象可以赋给基类的对象.例如: d ...

  7. 面向对象程序设计-C++_课时21引用

    数据类型 & 别名=对象名; #include <iostream> using namespace std; int * f(int * x) { (*x)++; return ...

  8. 面向对象程序设计-C++_课时17函数重载和默认参数

    函数重载,区别一是参数类型不同,二是参数个数不同. 默认参数可以多于1个,但必须放在参数序列的后部. 尽量不要用默认参数,会影响阅读 error C2668: “f”: 对重载函数的调用不明确 #in ...

  9. 面向对象程序设计-C++_课时16子类父类关系

    初始化列表 类名::类名(形参1,形参2,...形参n):数据成员1(形参1),数据成员2(形参2),...,数据成员n(形参n) { ... } 规则1,初始化列表进行数据成员的初始化 规则2,初始 ...

随机推荐

  1. php安全编程—sql注入攻击

    php安全编程--sql注入攻击 定义 SQL注入攻击指的是通过构建特殊的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过执行SQL语句进而执行攻击者所要的操作,其主要原因 ...

  2. SQL Server MYSQL 对外键建立索引的必要性

    背景: 大家知道在定义外键时,都会给出on delete .....   on update .....: 这里指定的就是当主表的列发生变化时,从表的列要用怎么样的变化去迎合.对从表中的外键,建立索引 ...

  3. 如何修改Struts2 FiledError样式

    有时候,使用Struts2的<s:fielderror />标签还是比较好的.但是这个标签本来的样式实在很难看,不但换行,而且有个大大的黑点.一看就知道用了<ui><li ...

  4. 转:JavaScript函数式编程(三)

    转:JavaScript函数式编程(三) 作者: Stark伟 这是完结篇了. 在第二篇文章里,我们介绍了 Maybe.Either.IO 等几种常见的 Functor,或许很多看完第二篇文章的人都会 ...

  5. mysqldump --master-data

    --master-data[=#] This causes the binary log position and filename to be appended to the output. If ...

  6. rsyslog 读日志文件 ,当rsyslog 中断时,也会丢数据

    rsyslog 日志服务器: [root@dr-mysql01 winfae_log]# grep scan0819 wj-proxy01-catalina.out.2016-08-19 [root@ ...

  7. javascript第五课表达式

    c#常用的表达式,一般这里都能用上 例如:三元表达式 var text=20>8? 真 : 假;  表达式?true:flase

  8. DB_Links创建际删除

    创建 create database link gadata0008 connect to gadata0008 identified by "gold" using 'ORA11 ...

  9. 利用ItextPdf、core-renderer-R8 来生成PDF

    近期因为工作上的须要,须要做一个简历产品的下载功能,而下载的形式要去为PDF,内容要求为整个简历的内容,并且格式上要求和简历的格式排版时一致的!前期调研.开发,最后測试上线.差点儿相同花了7天的时间. ...

  10. 执行CMD代码

    /// <summary> /// 发送CMD命令(执行命令行) /// </summary> public static void SendCMD(string pwd) { ...