Const 在C C++里有什么不同
2016-07-21 11:23
281 查看
在C中const的用法:
1、在定义变量时使用(const常量在定义后不能被修改,故在定义时一定要进行初始化操作)
A:变量是个常变量:
int const a=10;
const int a=10;
B:指针为指向常数的指针,(指针本身的值可以改变)
const int *cur=&b;
C :指针本身值不可变,但指向的内容可以变
int * const cur=&b;
D :指针为指向常数的常指针,即指针本身及指针指向的内容都不可变
const int * const cur =&b;
E: 说明引用为常数引用,即不能改变引用的值
const int& cur = 10;
2、在定义函数时使用
A
作为参数使用,说明函数体内是不能修改该参数的:
int fun(const int i);
B 返回值使用,说明函数的返回值是不能被修改的:
const int fun();
C 在函数中使用const,情况与定义变量的情况基本一致:
在C++中const用法:
A : const类成员变量
在对象构造期间允许被初始化并在以后不允许被改变。const类成员和一般的const变量不同,const类成员是对于每个对象而言,它在对象构造期间被初始化,在这个对象生命期间不允许被改变。
class A
{
…
const int nValue; //成员常量不能被修改
…
A(int x): nValue(x) { } ; //只能在初始化列表中赋值
}
B: const成员函数
const 成员函数不允许在此函数体内对此函数对应的类的所有成员变量进行修改,这样可以提高程序的健壮性。一般写在函数的最后来修饰
class A
{
…
void function()const; //常成员函数, 它不改变对象的成员变量.
//也不能调用类中任何非const成员函数。
}
C: const修饰类对象/对象指针/对象引用
const修饰类对象表示该对象为常量对象,其中的任何成员都不能被修改。对于对象指针和对象引用也是一样。
const修饰的对象,该对象的任何非const成员函数都不能被调用,因为任何非const成员函数会有修改成员变量的企图。
class AAA
{
void func1();
void func2() const;
}
const AAA aObj;
aObj.func1(); //×
aObj.func2(); //正确
const AAA* aObj = new AAA();
aObj-> func1(); //×
aObj-> func2(); //正确
const在C和C++中最大的不同是,在C中,const默认具有外部链接,而C++中则是内部链接。
所以当你只在定义const常量的文件中使用该常量时,c++不给你的const常量分配空间,此时const
int c = 0;
相当于#define c 0;而在C中,它会给每个const 常量分配内存空间。
1、在定义变量时使用(const常量在定义后不能被修改,故在定义时一定要进行初始化操作)
A:变量是个常变量:
int const a=10;
const int a=10;
B:指针为指向常数的指针,(指针本身的值可以改变)
const int *cur=&b;
C :指针本身值不可变,但指向的内容可以变
int * const cur=&b;
D :指针为指向常数的常指针,即指针本身及指针指向的内容都不可变
const int * const cur =&b;
E: 说明引用为常数引用,即不能改变引用的值
const int& cur = 10;
2、在定义函数时使用
A
作为参数使用,说明函数体内是不能修改该参数的:
int fun(const int i);
B 返回值使用,说明函数的返回值是不能被修改的:
const int fun();
C 在函数中使用const,情况与定义变量的情况基本一致:
在C++中const用法:
A : const类成员变量
在对象构造期间允许被初始化并在以后不允许被改变。const类成员和一般的const变量不同,const类成员是对于每个对象而言,它在对象构造期间被初始化,在这个对象生命期间不允许被改变。
class A
{
…
const int nValue; //成员常量不能被修改
…
A(int x): nValue(x) { } ; //只能在初始化列表中赋值
}
B: const成员函数
const 成员函数不允许在此函数体内对此函数对应的类的所有成员变量进行修改,这样可以提高程序的健壮性。一般写在函数的最后来修饰
class A
{
…
void function()const; //常成员函数, 它不改变对象的成员变量.
//也不能调用类中任何非const成员函数。
}
C: const修饰类对象/对象指针/对象引用
const修饰类对象表示该对象为常量对象,其中的任何成员都不能被修改。对于对象指针和对象引用也是一样。
const修饰的对象,该对象的任何非const成员函数都不能被调用,因为任何非const成员函数会有修改成员变量的企图。
class AAA
{
void func1();
void func2() const;
}
const AAA aObj;
aObj.func1(); //×
aObj.func2(); //正确
const AAA* aObj = new AAA();
aObj-> func1(); //×
aObj-> func2(); //正确
const在C和C++中最大的不同是,在C中,const默认具有外部链接,而C++中则是内部链接。
所以当你只在定义const常量的文件中使用该常量时,c++不给你的const常量分配空间,此时const
int c = 0;
相当于#define c 0;而在C中,它会给每个const 常量分配内存空间。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Linux C函数参考手册(PDF版)
- C# partial关键字说明
- Lua中调用C++函数示例
- Lua教程(十七):C API简介
- 简单谈谈lua和c的交互
- Lua教程(一):在C++中嵌入Lua脚本
- C#用链式方法表达循环嵌套
- Lua教程(二):C++和Lua相互传递数据示例
- C#中的委托数据类型简介
- C++联合体转换成C#结构的实现方法
- C#编写的艺术字类实例代码
- C#实现打造气泡屏幕保护效果
- 基于C#技术实现身份证识别功能
- 举例讲解C#编程中委托的实例化使用
- 使用C#代码获取存储过程返回值