【C++总结】函数形参,返回const对象与非const对象,成员函数,函数指针
来源:互联网 发布:淘宝网棉麻女装 编辑:程序博客网 时间:2024/05/16 15:40
非引用形参
//交换函数,传递的实参只是参数的副本。并不能起到交换作用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();}
用数组作为形参
//1void m(int a[]) { cout << a[0] << endl;}//2void m(int *a) { a[0] = 3; cout << a[0] << endl;}int a[] = {1, 2, 3};m(a);
也可以使用const数组形参
一般使用非const形参,实参会复制一份传递。
但是针对数组,数组会悄悄转为指针,参数传递是这个指针的副本,指向数组第一个元素,更改这个值,也就可以改变数组元素的值,这里不能通过计算得到数组的大小,必须使用第二个参数来告诉函数传进来的数组的大小
int a[] = {1, 2, 3, 4, 5}; cout << a << endl; cout << sizeof(a) << endl;//20//必须显示的把数组元素大小传进去int sum(int arr[], int n) { int total = 0; cout << sizeof arr << endl;//4 是一个元素的大小 for (int i = 0; i < n; i++) { total += arr[i]; } return total;}
返回非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;}
类的成员函数
class Person {public: bool isAgeSame(const Person &person) const { return age == person.age; } ;private: string name; int age;};
Person p;p.isAgeSame(person);
//cosnt成员函数不能修改调用者。bool isAgeSame(const Person &person) const { return age == person.age; } ;
当调用p.isAgeSame(person);会有一个隐含的this形参,相当于
bool isAgeSame(const Person &this, const Person &person) const;
后面的const表示const成员函数,不能修改this对象。
函数指针
//定义一个函数int m(int a) { return a;}int (*pf)(int);//声明一个函数指针,只需要把函数名换成(*pf)auto f = m;//使用auto的一个函数指针 pf = m;//函数指针赋值必须要写在main方法里面 f(5); (*pf)(5);
使用函数指针可以把函数作为函数的参数
//声明一个函数int m(int a) { return a + 1;}//使用函数指针作为函数的参数int change(int num, int (*pf)(int) ) { return (*pf)(num);}int main() {//把函数传进去 cout << change(5, m) << endl; return 0;}
0 0
- 【C++总结】函数形参,返回const对象与非const对象,成员函数,函数指针
- const对象调用非const成员函数
- this指针?const函数?const对象成员?
- const对象,const成员函数总结
- const成员函数与const对象
- const对象与const成员函数
- const成员函数与const对象
- const对象const成员函数
- cons对象/指针/引用,不能调用非const成员函数
- C++const对象 常量数据 常量成员函数 const指针 const引用
- 非const对象也可以调用const成员函数
- 非const对象也可以调用const成员函数
- const变量、const指针、const参数、const对象、const成员函数
- const对象与const函数
- 为什么const对象只能调用const成员函数,而不能调用非const成员函数?
- 为什么const对象只能调用const成员函数,而不能调用非const成员函数?
- const成员函数和对象
- const对象和const成员函数
- Nagios 无数据,出现 It appears as though you do not have permission to view information 问题解决
- 高盛向金融数据服务商Kensho投资1500万美元 欲以机器取代分析师
- windows下git bash中文乱码问题解决方法
- 如何给程序中的变量起个好名字
- 写的真好 ,太现实了
- 【C++总结】函数形参,返回const对象与非const对象,成员函数,函数指针
- 9个段子胜过你今年读的所有微信
- HTML5入门指南
- 如何成为一个真正在路上的Linuxer
- 你可以使用HTML Meta标签来做…
- 从登录框看前端
- 给HTML初学者的30条最佳实践
- ubuntu 12.04英文版设置成中文版
- Ubuntu命令大全