面向对象程序设计-C++_课时19const_课时20不可修改的
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不可修改的的更多相关文章
- 面向对象程序设计-C++_课时18内联函数
使用inline说明的函数称内联函数. 在C++中,除具有循环语句.switch语句的函数不能说明为内联函数外,其他函数都可以说明为内联函数. #include <iostream> us ...
- 面向对象程序设计-C++_课时30运算符重载——基本规则_课时31运算符重载——原型_课时32运算符重载——赋值_课时33运算符重载——类型转换
区分初始化,赋值 #include <iostream> using namespace std; class Fi { public: Fi() {}//1构造函数 }; class F ...
- 面向对象程序设计-C++_课时28静态对象_课时29静态成员
Static in C++ Two basic meanings Static Storage --allocated once at a fixed address Visibility of a ...
- 面向对象程序设计-C++_课时26拷贝构造Ⅰ_课时27拷贝构造Ⅱ
一旦写了一个类,给它3个函数: 1default construtor 2virtual destructor 3copy constructor Constructions vs. assignme ...
- 面向对象程序设计-C++_课时24多态的实现
所有带virtual的类的对象,里面最上面有一个隐藏的指针vptr,指向一张表vtable #include <iostream> using namespace std; class A ...
- 面向对象程序设计-C++_课时22向上造型
赋值兼容规则是指在公有派生情况下,一个派生类的对象可以作为基类的对象来使用的情况. 约定类derived是从类base公有派生而来的,则指如下3种情况: (1)派生的对象可以赋给基类的对象.例如: d ...
- 面向对象程序设计-C++_课时21引用
数据类型 & 别名=对象名; #include <iostream> using namespace std; int * f(int * x) { (*x)++; return ...
- 面向对象程序设计-C++_课时17函数重载和默认参数
函数重载,区别一是参数类型不同,二是参数个数不同. 默认参数可以多于1个,但必须放在参数序列的后部. 尽量不要用默认参数,会影响阅读 error C2668: “f”: 对重载函数的调用不明确 #in ...
- 面向对象程序设计-C++_课时16子类父类关系
初始化列表 类名::类名(形参1,形参2,...形参n):数据成员1(形参1),数据成员2(形参2),...,数据成员n(形参n) { ... } 规则1,初始化列表进行数据成员的初始化 规则2,初始 ...
随机推荐
- keil MDK编译器(V4.01)与H-JTAG的问题
前一阵子转投到MDK下面做开发,因为公司以前都用h-jtag做下载仿真工具,用的h-jtag版本为V0.9,我拿以前在ads1.2中编译成功的程序,稍作修改,在mdk下编译成功,仿真也没有问题,但下载 ...
- C#dll版本号默认生成规则
原文:C#dll版本号默认生成规则 1.版本号自动生成方法 只需把 AssemblyInfo.cs文件中的[assembly: AssemblyVersion("1.0.0.0") ...
- svn常见问题汇总
has no ancestry information 经查,由于project/,01Dev/的权限被关闭了,把当前文件夹父目录(project/,01Dev/) 下的 .svn/ 目录删除就好了.
- 2014第11周一word样式
今天摸索使用了word的样式替换功能感觉不错,简单记录下: 1.将某一个样式的标题统一替换为另一样式,之前一般是格式化一个个找到标题设置格式, 今天才发现可以选中标题->在浮动框上单击样式或开始 ...
- 关于Char* ,CString ,WCHAR*之间的转换问题
GDI+所有类的接口函数如果要传递字符串作为参数的话,似乎都用UNICODE串,即WCHAR*.我开始也被整得晕头转向,因为窗口编程所用往往是CString,用IO流读文件数据又得到char *.得益 ...
- 解决Admob Banner首次展示不显示的问题
Admob banner在第一次虽然加载成功了,但是却不显示.然后等待60秒刷新自动刷新,banner就能正常显示. 如果你没遇到过这种情况,那可能你用的不是集成在play-services里的库,因 ...
- chapter 10 统计检验
1.permutation test 用途:用于检验两组数据是否出生于同一分布 思路:如果产生于同一分布,两组数据混合,重新排列后,计算的基于两组数据的函数值(均值,中位数,方差等,下面程序中使用f指 ...
- 线性表A-B
1.顺序存储 #include<stdio.h> /* 设有两个顺序表A和B,且都递增有序,试写一算法,从A中删除与B中相同的那些元素,即求A-B */ #define getArrayL ...
- 通信基站(dfs回溯,思维)
Description Input Output
- 获取枚举Name,Value,Description两种方法
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...