C++核心编程(一)
2023-12-24 10:35:41
C++核心编程
1. 内存分区模型
- 代码区:存放函数的二进制代码,由操作系统进行管理
- 全局区:存放全局变量和静态变量以及常量
- 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等
- 堆区:由程序员分配和释放,若程序员不释放,程序结束由操作系统释放
2. 内联函数
在C++中,使用关键字 inline
可以将函数定义为内联函数。内联函数的特点是它们的定义必须在每个调用它们的源文件中可见,通常这意味着函数的定义通常会写在头文件(.h)中。
目的:在编译时将函数的代码嵌入到调用它们的地方,而不是像普通函数一样在链接时进行函数调用。因此,如果函数定义不在可见范围内,编译器无法将其内联到调用点。
在头文件中声明内联函数的原型(函数声明),并在同一头文件中定义函数的具体实现。
#构造函数可以直接赋初值,构造函数特性
complex (double r = 0, double i = 0) : re(r),im(i){}
1. 不带指针的构造函数多半不需要写析构函数 如果class里面带指针,就必须有拷贝构造和拷贝复制
2. 写在class里面的方法是内联函数(建议编译器内联,最后还是看编译器)
3. 数据一定要放在private里面,构造函数可以放在private里面,详情见后
以下的常成员函数在常量对象调用时起作用,若没加 const
常量对象调用时会报错 ,所以该加const
的地方一定要加
double real() const { return re; } #常成员函数
-
参数传递尽量用引用,返回也是
-
同一个class的不同object之间互为友元(firend)
-
临时对象 typename ()
-
如果class里面带指针,就必须有拷贝构造和拷贝复制
? 浅拷贝:只拷贝指针
b = a,如果使用编译器默认的函数,是浅拷贝,有可能导致内存泄漏
3. 拷贝构造函数
深拷贝:复制内存
拷贝赋值函数:把左边拷贝的右边分三步:1. 先把右边清空,2. 重新分配右边跟左边一样大的内存,3. 拷贝
变量可以声明多次,但只能定义一次
extern int a; #声明
extern int a = 0; #定义
静态函数属于类,而不属于对象
模板类在编译时要把.h文件和.cpp文件都要添加
文章来源:https://blog.csdn.net/qq_43784519/article/details/135169945
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!