c++中常类型有几种?如何定义它们?

如题所述

常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。因此,定义或说明常类型时必须进行初始化。

  一般常量和对象常量

  1. 一般常量

  一般常量是指简单类型的常量。这种常量在定义时,修饰符const可以用在类型说明符前,也可以用在类型说明符后。如:

  int const x=2;

  或

  const int x=2;

  定义或说明一个常数组可采用如下格式:

  <类型说明符> const <数组名>[<大小>]…

  或者

  const <类型说明符> <数组名>[<大小>]…

  例如:

  int const a[5]={1, 2, 3, 4, 5};

  2. 常对象

  常对象是指对象常量,定义格式如下:

  <类名> const <对象名>

  或者

  const <类名> <对象名>

  定义常对象时,同样要进行初始化,并且该对象不能再被更新,修饰符const可以放在类名后面,也可以放在类名前面。

  常指针和常引用

  1. 常指针

  使用const修饰指针时,由于const的位置不同,而含意不同。下面举两个例子,说明它们的区别。

  下面定义的一个指向字符串的常量指针:

  char * const prt1 = stringprt1;

  其中,ptr1是一个常量指针。因此,下面赋值是非法的。

  ptr1 = stringprt2;

  而下面的赋值是合法的:

  *ptr1 = "m";

  因为指针ptr1所指向的变量是可以更新的,不可更新的是常量指针ptr1所指的方向(别的字符串)。

  下面定义了一个指向字符串常量的指针:

  const * ptr2 = stringprt1;

  其中,ptr2是一个指向字符串常量的指针。ptr2所指向的字符串不能更新的,而ptr2是可以更新的。因此,

  *ptr2 = "x";

  是非法的,而:

  ptr2 = stringptr2;

  是合法的。

  所以,在使用const修饰指针时,应该注意const的位置。定义一个指向字符串的指针常量和定义一个指向字符串常量的指针时,const修饰符的位置不同,前者const放在*和指针名之间,后者const放在类型说明符前。

  2. 常引用

  使用const修饰符也可以说明引用,被说明的引用为常引用,该引用所引用的对象不能被更新。其定义格式如下:

  const <类型说明符> & <引用名>

  例如:

  const double & v;

  在实际应用中,常指针和常引用往往用来作函数的形参,这样的参数称为常参数。

  在C++面向对象的程序设计中,指针和引用使用得较多,其中使用const修饰的常指针和常引用用得更多。使用常参数则表明该函数不会更新某个参数所指向或所引用的对象,这样,在参数传递过程中就不需要执行拷贝初始化构造函数,这将会改善程序的运行效率。

  下面举一例子说明常指针作函数参数的作法。

  #include

  const int N = 6;

  void print(const int *p, int n);

  void main()

  {

  int array[N];

  for (int i=0; i cin>>array[i];

  print(array, N);

  }

  void print(const int *p, int n)

  {

  cout<<"{"<<*p;

  for (int i=1; i cout<<","<<*(p+i);

  cout<<"}"< }

  常成员函数

  使用const关键字进行说明的成员函数,称为常成员函数。只有常成员函数才有资格操作常量或常对象,没有使用const关键字说明的成员函数不能用来操作常对象。常成员函数说明格式如下:

  <类型说明符> <函数名> (<参数表>) const;

  其中,const是加在函数说明后面的类型修饰符,它是函数类型的一个组成部分,因此,在函数实现部分也要带const关键字。下面举一例子说明常成员函数的特征。

  #include

  class R

  {

  public:

  R(int r1, int r2) { R1=r1; R2=r2; }

  void print();

  void print() const;

  private:

  int R1, R2;

  };

  void R::print()

  {

  cout< }

  void R::print() const

  {

  cout< }

  void main()

  {

  R a(5, 4);

  a.print();

  const R b(20, 52);

  b.print();

  }
温馨提示:内容为网友见解,仅供参考
无其他回答

c++中常类型有几种?如何定义它们?
2. 常引用 使用const修饰符也可以说明引用,被说明的引用为常引用,该引用所引用的对象不能被更新。其定义格式如下:const <类型说明符> & <引用名> 例如:const double & v;在实际应用中,常指针和常引用往往用来作函数的形参,这样的参数称为常参数。在C++面向对象的程序设计中,指针和引用使用得...

c++中有哪些类类型
声明标准数据类型的变(常)量时用的是关键字(int,char,signed等),声明以C++提供的类为类型的变(常)量时用的不是关键字(string,vector等),输入流和输出流这两个类只等使用cin和cout,不能自己另外声明。除此之外还可以自定义结构(struct)、枚举(enum)、联合(union)和类型定义 (type...

c++的变量类型的数值范围(常用)
在C++中,变量的类型对其数值范围有着直接的影响。以下是关于常见变量类型的一些关键信息:1. 基本类型及其范围:- 整型(如int, short, char): 取值范围根据所占位数不同,如int通常占用4个字节,其取值范围一般在-2,147,483,648到2,147,483,647之间。输入和输出通常使用符号如%d或%i。- 浮点型...

c++中常见的单词的意思及其作用是什么?
\\x0d\\x0abool,不二类型,也就是真和假,有人喜欢写作布尔类型,我觉得不二比较形象,不是0就是1,不是2...\\x0d\\x0abreak,用于循环的结尾,switch...case:的结尾,表示循环或者分支被打断\\x0d\\x0acase,与switch配合使用,表示一个分支\\x0d\\x0achar,字符类型,表示一个字符\\x0d\\x0a...

在C++编程中常常有int main()和void main(),大家能不能举人实际的例子解...
main 是主函数 跟其他的函数一样.函数必须可以返回值也可以不返回,返回什么类型就在函数前写什么类型 如果这么函数没有返回值定义函数的时候就写 void, main是主函数,可以返回也可以不返回,如果返回了一般都是0,就是没有错误,如果有错误可以返回其他值 int main(){ cout<<"hello""<<endl;return 0...

青少年编程科普—C++数据类型取值范围解析
编程学习中,数据类型的选择至关重要。本文将解析C++常见数据类型的取值范围,帮助青少年编程爱好者更深入理解。一、整型(Integer Types)整型数据用于存储整数,包括int、short、long等。在大多数现代编译器和平台上,int通常为32位,其取值范围为-2147483648至2147483647(-2147483648至2147483647)。unsigned ...

C++中经常用到的单词和对应的翻译
寄存器变量 return 返回 short 短整型 signed sizeof 测试结构长度 static 静态变量 struct 结构体 switch 分支结构 typedef 类型代换 union 共用体 unsigned 无符号整数 void 空 volatile 变量不被编译器优化 while 循环标记 ...

C++中False与True 如何定义
对于C语言,并不存在系统自带的bool类型和False和Ture的定义,如果要使用则必须自定义类型。有两种常见的方法。1、使用宏定义。通过define来进行定义False和True。可以采用如下方式:(1) 直接定义数值 define False 0 define True 1 (2) 通过逻辑判断定义 define False (1!=1)define True (1==1)2...

C++ 类的各种公开、私有、保护成员定义的实际意义?
3、保护成员,C++一个很重要的特性是实现继承,也叫做派生,派生一词最早出现于亚理士多德的《工具论》,中国古代的诸子百家中有一家叫做名家,著名的白马非马的故事就是出自于此,派生的概念类似于马和白马的关系。用数学集合的观点来看,马是一个集合,白马是马的子集,派生实际上实现的就是这种子集...

常用的字段类型有哪些?各自有何特征?
字段在C++中的定义:一个成员,它表示与对象或类关联的变量。字段类型 不同的字段类型用来存放不同类型的数据。创建和使用表时,更你应该理解五种常用的字段类型:字符型,文本型,数值型,逻辑性和日期型。字符型数据 字符型数据非常有用。当你需要存储短的字符串信息时,你总是要用到字符型数据。

相似回答
大家正在搜