`
3895177
  • 浏览: 23660 次
社区版块
存档分类
最新评论

const总结二 之 常量函数形参

    博客分类:
  • c++
 
阅读更多

总结:常量函数形参传递参数,保证参数在函数体里面不受修改。有时候,如果形参是指针形参或者引用形参,或者是字符数组,不想函数体对其进行修改,那么可以采用常量函数形参。

实例:

定义EObject类,该类有width和height两个属性,有4个函数对其进行读取和修改。

class EObject
{
public:
	EObject(void);
	~EObject(void);

	int getWidth(){return this->width;}
	int getHeight(){return this->height;}
	void setWidth(int w){this->width = w;}
	void setHeight(int h){this->height = h;}

private:
	int width;
	int height;
};

 

#include "EObject.h"
class Parameter
{
public:
	Parameter(void);
	~Parameter(void);
	
	//正常的常量形参
	void normalParameter(const int i);
	//const 在*左边的指针形参
	void pointParameterL(const int* l);
	//cosnt 在*右边的指针形参
	void pointParmaeterR(int* const r);
	//类引用形参
	void classParmaeter(const EObject& obj);
	//const在*左边的类指针形参
	void classParameterL(const EObject* obj);
	//const在*右边的类指针形参
	void classParmaeterR(EObject* const obj);
	
};

 

#include "Parameter.h"


Parameter::Parameter(void)
{
}


Parameter::~Parameter(void)
{
}


void Parameter::normalParameter(const int i)
{
	//i=10;//error C3892: “i”: 不能给常量赋值
}

void Parameter::pointParameterL(const int* l)
{
	//const在*的左边,代表指针所指内容不能被修改
	//*l = 10;//error C3892: “l”: 不能给常量赋值
}

void Parameter::pointParmaeterR(int* const r)
{
	//const在*的右边,代表指针不能被修改
	//r++;// error C3892: “r”: 不能给常量赋值
}

void Parameter::classParmaeter(const EObject& obj)
{
	//后续章节介绍
}

void classParameterL(const EObject* obj)
{
	//后续章节介绍
}

void Parameter::classParmaeterR(EObject* const obj)
{
	//const在*的右边,代表指针不能被修改
	//obj = new EObject();//error C3892: “obj”: 不能给常量赋值
}

  

分享到:
评论

相关推荐

    C++常量详解二(常量形参,常量返回值,常量成员函数)

    C++常量详解二(常量形参、常量返回值、常量成员函数) C++ 中的常量是指在编译期确定的值,它们不能被改变。在本篇文章中,我们将深入探讨 C++ 常量的三个方面:常量形参、常量返回值和常量成员函数。 1.常量形参...

    函数指针和指针函数,const的用法,指针常量,常量指针的用法

    这里的“函数类型”指的是函数返回值的类型,“形参列表”则指定了函数的参数列表。例如: ``` int (*f)(int x); // 定义了一个指向接受一个整型参数并返回整型值的函数的指针 double (*ptr)(double x); // 定义了一...

    C++中const用法总结

    ### C++中const用法总结 #### 一、引言 `const` 是 C++ 中一个非常重要的关键字,用于声明常量或指定某些实体不可被修改。熟练掌握 `const` 的使用方法对于编写高质量的 C++ 代码至关重要。本文将详细介绍 `const`...

    C++中const用法总结.doc

    以下是对C++中`const`用法的详细总结: 1. **const修饰普通变量和指针** 当`const`修饰普通变量时,变量的值在声明后不允许改变。例如: ```cpp const int nValue = 10; // nValue 的值不可变 ``` 对于指针,`...

    c++中的const用法总结

    C++中的`const`关键字是程序设计中极为重要的概念,用于声明常量或指定对象、指针、函数参数和返回值等的不变性。本文将深入解析`const`在C++中的各种用法,帮助初学者更好地理解并掌握这一关键特性。 ### 1. `...

    C++编程中的const关键字常见用法总结

    在C++编程中,`const`关键字是一种非常重要的特性,用于定义常量、限制指针和引用的行为,以及约束函数的副作用。以下是`const`关键字的一些常见用法: 1. **定义常量**: `const`关键字可以用来声明常量,确保...

    const在c++中的用法

    `const` 关键字在 C++ 中的应用非常广泛,不仅限于简单的常量定义,还包括了更复杂的指针类型定义、形参和返回值的限定以及 `const` 成员函数的使用等。正确理解和灵活运用 `const` 不仅能够提高代码的质量,还能...

    C/C++中CONST用法总结(推荐)

    Const 修饰符可以用于修饰函数的返回值和形参,例如 `int func() const;`。Const 修饰返回值主要用于操作符的重载。 七、Const 与 Define 宏定义的区别 Const 常量和 Define 宏定义是两种不同的定义常量的方式。...

    const的用法

    当向一个函数传入指针时,该函数可以改变指针指向的实际对象,而在函数形参生命中把指针定义为 const 型时,函数中的代码无法修改传入指针指向的实际变量。 例如,`const char* p = "hello world";`,这里的指针 `p...

    c++中const 的各种用法

    对象`aObj`被声明为常量,这意味着只有标记为`const`的成员函数可以被调用。 2. **修饰对象指针**: - **语法**: ```cpp const CLASS *objectPtr; ``` - **示例**: ```cpp const AAA *aObj = new AAA(); ...

    C语言中const用法浅析.pdf

    当数组名或指向数组的指针作为函数参数时,形参实际上和形参是共用同一段内存空间的。因此,使用const修饰符可以防止函数修改数组的内容。例如,`void func(const int arr[])`,这里的const修饰符可以防止函数修改...

    C++ 精简且易懂的总结

    C++是一种强大的面向对象编程...总结来说,C++的这些核心概念包括构造函数、局部静态变量、常量、引用、指针与`const`的结合以及堆和拷贝构造函数。理解这些概念是深入学习C++的基础,有助于编写更加安全和高效的代码。

    关于C的关键字——const的理解和用法

    在调用函数的形参中用const关键字,可以防止传递的函数参数不被修改。例如: ```c int FindNum(const int array[], int num, int count) { int i; int flag = 1; for (i = 0; (i ) && flag; i++) { if (array[i]...

    C++的基础知识,C++的基础知识

    引用是已定义的变量的别名,引用的主要用途就是用作函数的形参。引用的定义必须在声明的时候初始化它,而指针可以不初始化。引用的特别之处是实参和引用参数的类型必须一致,否则C++将产生临时变量。 例如,double ...

    C的关键字——const的理解和用法

    1. 为了防止传递的函数参数不被修改,在调用函数的形参中用const关键字。 例如: ```c int FindNum(const int array[], int num, int count) { // ... } ``` 在这个例子中,编译器会把array[]当作常量数据的数组...

    无标题C++ssssss

    本文档总结了C++基础知识点,包括构造函数赋初值的特殊写法、命名空间、位运算符、switch语句、函数形参的默认值设置、函数重载、引用、指针、数组的内存分析、数组遍历的两种方法、选择排序和冒泡排序等。...

    C++面向对象程序设计——复习大纲.pdf

    本文档为C++面向对象程序设计的复习大纲,涵盖了面向对象编程的基本概念、标准名字空间、Const的使用、内联函数、函数重载、函数模板等多个方面的知识点。 一、面向对象编程的基本概念 面向对象是一种新的软件工程...

    详解C++中的const关键字及与C语言中const的区别

    在C++中,const常量和宏定义#define在功能上有相似之处,都可以用于定义常量。然而,const提供的是一种类型检查,而#define则只是简单的文本替换,因此const被认为是一种更安全的方式。 在函数重载中,const也可以...

Global site tag (gtag.js) - Google Analytics