码迷,mamicode.com
首页 > 编程语言 > 详细

c++ const小结

时间:2016-05-03 21:51:02      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:

1.如果const出现在*左边,表示被指物是常量(被指物内容不能修改,但指针可以指向其他对象);如果const出现在*右边,表示指针本身是常量(指针不能再指向其他对象)

int k = 9;
const int* ptr = &k; 
const * int ptr = &k;
int const* ptr = &k;   //这三种方式在vc++6.0中都是可以通过编译的,都代表变量 k的值不能被修改,但指针ptr可以指向其他对象
int* const ptr = &k;   //这种方式代表指针ptr不能指向其他对象

2.非常量引用不能接收常量变量(函数参数指定为非常量引用时,不能把常量作为参数传递给函数),但反过来常量变量可以接收非常量引用

#include<iostream>
using namespace std;

void fun(const int& f){ //常量引用可以接受非常量变量
cout<<"常量引用f = "<<f<<endl;
return;
}

void funf(int& f){ //非常量引用不能接受常量变量
cout<<"非常量引用f = "<<f<<endl;
return;
}

int main(){
const int gg = 99;
int g = 9; 
fun(g); //将非常量变量作为实参
funf(gg); //将常量变量作为实参
return 0;
}

3.常对象不能调用一般成员函数(const成员函数不能调用non-const成员函数,但反过来non-const成员函数可以调用const成员函数)

class fun{
private:
int w;
public:
fun(int x){w = x;}
void print(){cout<<"w = "<<w<<endl;} //non-const成员函数
};

// const fun cf(666);
fun f(666);
// cf.print();//error  常对象调用一般成员函数
f.print();

4.一般不能给输出型参数(输出型参数就是让函数内部把数据输出到函数外部的)加const修饰,否则该参数会失去输出功能。const只能修饰输入型参数

#include<iostream>
using namespace std;

int multip5_3(int a, int *p) //a=30, p=&b

int tmp = 5 * a; 
*p = tmp; //此处通过输出参数在函数内部把数据输出到函数外部
return 0; 
}

int main(void) 

int a = 30, b = 0, ret = -1; 
multip5_3(a, &b);   //这里的a为输入参数,b的引用为输出参数
cout<<"result = "<<b<<endl; 
return 0;
}

c++ const小结

标签:

原文地址:http://www.cnblogs.com/xiaokaka/p/5456508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!