转:http://blog.csdn.net/zimingjushi/article/details/6716269
(0 0) +-----oOO----(_)----------+ | | | | | | +------------------oOO----+ |__|__| || || ooO Ooo
const void fun(){};和void const fun(){};两个相同。
如果采用"按址传递方式"的函数返回值加const 修饰,那么函数返回值(即地址)的内容不能被修改,该返回值只能被赋给加const 修饰的同类型指针。
如果采用"按值传递方式"的函数返回值加const 修饰,由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。
所以不要尽量不要把int fun2();写成const int fun2(); 因为没意义。例:
#include<iostream> using namespace std; int num = 10;//全局变量 const int *fun1() { return #//返回地址 } const int fun2()//按值传递,最后写成int fun2() { return num; } int main() { const int *fun1(); //int *t1 = fun2();//错误,必须是const型 const int *t1 = fun1(); //*t1 = 20;//按址传递,不能修改其只想变量或常量的值 cout << "const int *fun1() : \t" << *t1 << endl; const int fun2();//最好直接声明成int fun2() int t2 = fun2();//非const变量可以更改函数返回值 const int t3 = fun2(); t2 += 10;//按值传递,可以修改返回值 cout << "const int fun2() :\t" << t2 <<endl; return 0; }
void fun() const{};
类的成员函数后面加 const,表明这个函数不可以对这个类对象的数据成员(准确地说是非static数据成员)作任何改变例:
#include<iostream> using namespace std; class R { private: int num1; static int num2; public: R():num1(1) {} int sum1(int a)const { return a + num1; //num1 = 10,错误,不可以修改非static数据成员 } int sum2(int a)const { num2 = 2;//正确,可以修改sattic数据成员 return a + num2; } int sum3(int a) { num1 = 10;//正确,修改非static数据成员 num2 = 20;//正确,修改sattic数据成员 return a + num1 + num2; } }; int R::num2 = 0; int main() { R t; cout << "t.sum1(1):\t" << t.sum1(1) << endl; cout << "t.sum2(1):\t" << t.sum2(1) << endl; cout << "t.sum3(1):\t" << t.sum3(1) << endl; }
相关推荐
void fun() const{}; 、 const void fun(){}; 和void const fun(){}; 的区别?
const 可以修饰参数,例如:void fun0(const A* a ); void fun1(const A& a); 在函数体中,按照 const 所修饰的部分进行常量化。 小结 const 是 C++ 中一个非常重要的关键字,它可以用来修饰变量、指针、函数参数...
void fun0(const A* a ); void fun1( ) const; 这里,fun1()函数为类成员函数,const修饰的是整个函数。 Const也可以用来修饰参数,例如: void fun0(const A* a ); void fun1(const A& a); 调用函数的时候,用...
- **修饰函数参数**:如 `void Fun(const int Var);` - **修饰函数返回值**:如 `const int Fun1();` - **修饰类的成员函数**:如 `int Fun() const;` - **在其他文件中引用 `const` 常量**:需使用 `extern ...
- 作为参数:`void fun(const A *a)`或`void fun(const A &a)`,保护了传入的对象或指针内容不被函数内部修改。 - 作为返回值:`const A fun2();`或`const A* fun3();`,防止返回的对象被意外修改。 4. **`const`...
void fun0(const int* a); // a是一个指向整数的常量指针,不能修改a指向的值 void fun1(const int& a); // a是一个对整数的常量引用,不能修改a引用的对象 ``` 2. 返回值的const修饰 如果函数的返回值被声明为...
- 修饰函数参数:`void Fun(const int i)`,保证参数在函数内部不会被修改。 - 修饰函数返回值:如`const int Fun()`,返回的常量不能被改变。 - 修饰成员函数:`int Fun() const;`,表明成员函数不会修改类的...
void Fun(const A* in); // 修饰指针型传入参数 void Fun(const A& in); // 修饰引用型传入参数 ``` 这样做的好处是可以提高函数的健壮性,避免意外修改外部数据。 ##### 4. 修饰函数返回值 将函数的返回值声明为`...
- 修饰函数参数,保护参数不被函数内部修改,如`void fun0(const A* a );`,防止函数通过指针修改传入对象的值。 - 修饰成员函数,表示函数不会修改对象的状态,如`void fun1() const;`这样的成员函数称为常量成员...
` 和 `void fun0(const A* a );`。使用 const 可以保护函数的参数和返回值,避免了意外的修改操作。 const 是 C 语言中一个非常重要的关键字,它可以用来修饰变量、指针、函数返回值、函数参数和成员函数等。使用 ...
void fun(const B& b); ``` **6. const成员函数** 当一个成员函数被声明为`const`时,意味着它不会修改类的任何成员变量。 ```cpp class B { public: void display() const; // 不修改成员变量 }; void B::...
作者:陶宁,华清远见嵌入式学院上海中心讲师。 1.在一个函数声明中,const 可以修饰函数的... 1) 修饰参数的const,如 void fun0(const A* a ); void fun1(const A& a); 调用函数的时候,用相应的变量初始化
6. 修饰函数的常参数:如void fun(const int var); 7. 修饰函数的返回值:如const MyClass fun2(); 8. 修饰类的成员函数:如class A { int fun() const; }; 在使用const时,还需注意以下几点: - 常量必须初始化...
#### 二、const修饰普通变量和指针 `const` 可以用来修饰变量、指针等,使它们成为不可变的常量。在修饰普通变量时,无论 `const` 放在数据类型之前还是之后,效果是一样的。例如: ```cpp const int nValue = 10;...
void fun1(const int &val) { // 无法修改 val } ``` 3. **修饰指针**: - `const int *A`:表示指针`A`指向的是一个常量整数,即不能通过指针修改所指的值。 - `int *const A`:表示指针`A`本身是常量,其...
void fun1(const int &val) { // val不能被修改 } void fun2(int &val) { val = 10; } // val可以被修改 ``` 3. **节省内存空间**:使用`const`定义的变量,编译器可以进行优化,如在类外定义的`const`常量不会...
void fun0(const A *a); // 读取数据,不修改 ``` #### 11. 成员函数 成员函数可以声明为`const`,表明该函数不会修改对象状态。 ```cpp void fun1() const; // 成员函数声明为const ``` #### 结论 `const`的...
- **常函数参数**:`void func(const int x)`中的`x`在函数内部不可修改。 - **常返回值**:函数返回`const`类型,如`const int Fun()`,确保返回的值不可修改。 - **常成员函数**:`const`修饰的成员函数,如`...
在C++编程语言中,`const`关键字是一个非常重要的元素,用于声明不可变性,确保程序的稳定性和安全性。以下是对C++中`const`用法的详细总结: 1. **const修饰普通变量和指针** 当`const`修饰普通变量时,变量的值...