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

【C++总结】函数形参,返回const对象与非const对象

时间:2015-05-28 14:05:27      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:const

非引用形参

//交换函数,传递的实参只是参数的副本。并不能起到交换作用
void swap(int a, int b) {
    int m  = a;
    a = b;
    b = m;
}

指针形参

//可以起到交换作用
void swap(int *a, int *b) {
    int m  = *a;
    *a = *b;
    *b = m;
}

引用形参

//可以起到交换作用
void swap(int &a, int &b) {
    int temp = a;
    a = b;
    b = temp;
}

const形参

用const修饰形参,避免实参被修改

string::size_type length(const string &str) {
    return str.size();
}

用数组作为形参

//1
void m(int a[]) {
    cout << a[0] <<  endl;
}

//2
void m(int *a) {
    a[0] = 3;
    cout << a[0] <<  endl;
}

int a[] = {1, 2, 3};
m(a);

也可以使用const数组形参
一般使用非const形参,实参会复制一份传递。
但是针对数组,数组会悄悄转为指针,参数传递是这个指针的副本,指向数组第一个元素,更改这个值,也就可以改变数组元素的值

返回非const对象

把要返回的对象复制一个副本返回回去

const string getString(const string &str1, const string &str2) {
    return str1.size() < str2.size()? str1 : str2;
}

返回cons对象

没有复制直接返回原对象,但是千万不要返回局部对象的引用,因为函数运行完这些对象要销毁

const string &getString(const string &str1, const string &str2) {
    return str1.size() < str2.size()? str1 : str2;
}

【C++总结】函数形参,返回const对象与非const对象

标签:const

原文地址:http://blog.csdn.net/ttf1993/article/details/46121983

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