c++函数笔记
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++函数笔记,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2465字,纯文字阅读大概需要4分钟。
内容图文
![c++函数笔记](/upload/InfoBanner/zyjiaocheng/643/7a6c46a01e6e4fa59b2b12f52978922a.jpg)
构造函数
名字与类名相同,可以有参数,不能有返回值(void 也不行)
作用是对对象进行初始化,编译器会默认生成一个构造函数(什么也不干)
对一个对象构造函数必定调用,且只会调用一次
一个类可以有多个构造函数,参数个数或类型不同(可以有默认类型转换,如int转double)
class TEST
{
public:
TEST(int n){} //1
TEST(int n,int m){} //2
TEST(){} //3
};
TEST array[3]={ 1, TEST(1,2)}; 三个元素分别用1,2,3初始化
TEST *p[3]={new TEST(4),new TEST(1,2)}; 只有两个元素被初始化,分别用1,2
析构函数
名字是对象名前加一个~ 如~TEST()
没有参数和返回值,一个类只能有一个析构函数,不像构造函数可以重载
默认生成析构函数,对象生命期结束时会自动调用析构函数
一般用来删除空间
class TEST
{
public:
~TEST()
{
cout<<"destruction"<<endl;
}
};
int main()
{
TEST array[2];
cout<<"end main"<<endl;
return 0;
}
输出:
end main
destruction
destruction
delete运算符导致析构函数调用
TEST * a;
a = new TEST; //构造函数调用
delete a; //析构函数调用
a = new TEST[3]; //构造函数调用三次
delete [] a; //析构函数调用三次
内联函数:
为了减少函数调用的开销,引入内联函数,编译器处理内联函数时直接将内联函数代码插入对应语句位置,不生成函数调用语句。
方法:
在函数定义类型前加 inline 关键字。
inline MAX(int a, int b)
{
if(a>b)
return a;
return b;
}
复制构造函数:
只有一个参数,是同类对象的引用,注意不能是对象,以类TEST为例
TEST::TEST(TEST &a) 或
TEST::TEST(const TEST &a)
这样是不对的:
TEST::TEST(TEST a)
如果没有定义复制构造函数,编译器会自动构造一个复制构造函数(默认完成复制功能)
复制构造起作用的三种情况:
1. 当用一个对象去初始化同类另一个对象时。
TEST c2(c1);
TEST c2=c1; 这是赋值语句不是初始化
2. 如果某函数有一个参数是类A的对象,那么该函数调用时,类A的复制构造函数将被调用
void function(TEST a){}
int main()
{
TEST a;
function(a);
return 0;
}
3.如果一个函数的返回值是类A的对象,则函数返回时会调用类A二的复制构造函数
TEST function()
{
TEST a(3);
return a;
}
tips:使用上述函数时会调用复制构造函数,会造成开销,如果你的函数不需要修改类的变量,推荐使用TEST &a作为形参,此外如果你的函数不能修改类的变量,可以使用const TEST &a作为形参。(引用没有使用新的空间,不会调用复制构造函数)
类型转换构造函数
目的是实现类型的自动转换
只有一个参数
酷似普通的构造函数
class TEST
{
public:
int a,b;
TEST(int n) 类型转换构造函数
{
a=n; b=0;
}
TEST(int a,int b)
{
a=a; b=b;
}
};
int main()
{
TEST c1(7,8);
TEST c2=12; 此处使用
c1=9; 此处使用,9被自动转换成一个临时TEST对象
return 0;
}
综合例子:
课程链接:https://www.icourse163.org/learn/PKU-1002029030#/learn/announce
内容总结
以上是互联网集市为您收集整理的c++函数笔记全部内容,希望文章能够帮你解决c++函数笔记所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。