函数相关的东西
来源:互联网 发布:网络电视哪个牌子的好 编辑:程序博客网 时间:2024/06/05 02:33
1.哪些类需要自己定义构造函数?
含有内置类型或者符合类型成员的类,通常应该定义自己的默认构造函数初始化这些成员。
对于具有类类型的成员,编译器创建的默认构造函数会调用类类型成员所属类自身的默认构造函数实现该成员变量的初始化。
对于具有内置类型的成员,编译器创建的默认构造函数会1.如果对象(类对象)定义在全局作用域(函数外)或者是静态局部对象,则内置类型(类成员变量)初始化为0
2.如果对象定义在局部作用域中,则内置类型未进行初始化。
2.重载函数,同一个函数名,根据形参表(区别重载函数的唯一标准,返回值不用于区别重载函数)的不同,编译器调用不同的函数实现。
bool lookup(const account&);
Record lookup(const account&);//只有返回值不同,该函数定义是error的
//下面的函数不是重载函数而是同一个函数
Record lookup(phone);
Record lookup(const phone);//值传递,复制形参时不考虑是否为const,函数操作的只是副本,函数无法修改实参。
有const引用形参,有非const引用形参的函数
有指向const类型的指针形参,有指向相同类型非const对象的指针则属于函数的重载。
Record lookup(const phone&, const name&);
Record lookup(const phone&, const name& = " ");//默认实参并没有改变形参的个数,所以属于函数的重复定义
2.1局部声明的函数会屏蔽而不是重载外层作用域中声明的同名函数(所以要求重载函数都生命在同一作用域中,如果声明在头文件中)
void print(const string &);
void print(double);//overloads,print函数的重载
void foodBar()
{
void print(int);//函数的声明,屏蔽了外部的print
print("value");//error,因为void print(const string &);被屏蔽了,这里调用的是void print(int);明显实参和形参不匹配,出现error
print(3.14);//ok,但是调用的void print(int),值传递时候隐式转换,实际为print(3);,void print(double);被屏蔽了
}
3.带默认形参的函数(一般是在声明的时候指定默认形参)
bool adsCheckIsSmallRect(adsRect& rect, adsInt & getSP = 0); //error, 因为adsInt & getSP = 0, 左边是adsInt &, 而右边是adsInt, 相当于是引用的
//初始化问题,引用的右值应该是一个变量
带默认值的意思是表示,调用的时候可以不给形参赋实参,而去用默认的实参值。但是在函数声明的时候必须还是要写全所有的形参列表。
默认值的指定可以在函数定义或者声明的时候指定一次。
void fun(int *p = NULL) //带默认实参
{
int q=50;
*p=q; //p所指的内存为空,不能访问一个空的内存,“段错误”
}
如果要按上面的方法来的话(利用指针形参返回局部变量+带默认实参)可以加个if条件
void fun(int *p = NULL)
{
int q=50;
if(p)
*p=q;
}
这样在调用的时候,如果直接调用fun();(有可能会报错,因为不知道调用的是void fun(void),还是void fun(int *p =NULL))则表明不返回局部变量值
如果调用的是int temp = 0; fun(&temp); 则可以通过temp返回局部变量值q。
- 函数相关的东西
- servlet的相关东西
- NORUSH的相关东西
- Bugzilla相关的东西
- git相关的东西
- backbon的相关东西
- LED驱动相关的东西
- Oracle相关的一些东西
- concurrenthashmap相关的一些东西
- 相关研究的东西资料
- 接口相关零碎的东西
- js继承相关的东西
- apache 相关的一些东西
- Android 蓝牙相关的东西
- 虚函数的一些东西
- 补充一些linux进程相关的东西
- 准备写android相关的东西了
- 一些与C++测试相关的东西
- Maven的pom.xml文件结构之Build配置build(转载)
- 设置Webstorm支持ES6并自动转码成ES5
- Java线程池使用说明
- 判断时间是否属于同一天
- Discuz!开发之替换系统IP库为纯真IP库的方法
- 函数相关的东西
- Hadoop入门学习(1)
- GBDT和随机森林的区别
- iOS并发编程(一)-简介
- 十天小白训练营day02—古诗作业
- PLSQL无客户端连接ORACAL
- Navicat连接Mysql报1042- Can't get hostname for your address错误的解决办法
- SpringMVC+MyBatis(最新)
- Android之利用正则表达式校验邮箱、手机号、密码、身份证号码等