0
点赞
收藏
分享

微信扫一扫

c++的一部分笔记

Python芸芸 2022-03-11 阅读 116

c++的一部分笔记

课程目录

lesson3 :构造函数与析构函数

构造函数根据传入参数的不同分为很多种,下面的3种:
    1、默认构造函数,不带参数,默认无参构造 People a;
    2、转换构造,带参数的构造,People(string name); People a(“tanhao”);
    3、拷贝构造,利用同类型的其他对象构造出一个新的对象,People(const People &a); 拷贝构造与=不等价
构造函数的任务:初始化对象
析构函数:析构函数 ~People(); 没有参数
计算机默认已经把默认构造,拷贝构造,析构函数都写好了。

//L1.cpp
#include <iostream>
using namespace std;
class A{
public:
    A(){
        cout << this << " :cosntructot"<<endl;
    }
    ~A(){
        cout << this << ":destructor"<<endl;
    }
};
int main()
{
    A a;
    A b;
    return 0;
}
root@th d3 # g++ L1.cpp                                                                              
root@th d3 # ./a.out                                                                                 
0x7ffc15f54946 :cosntructot
0x7ffc15f54947 :cosntructot
0x7ffc15f54947:destructor
0x7ffc15f54946:destructor
先构造的后释放。析构顺序和构造顺序相反。
#include <iostream>
using namespace std;

class A{
public:
    A(){
        cout << this << " :cosntructot"<<endl;
    }
    ~A(){
        cout << this << ":destructor"<<endl;
    }
};
//定义在全局区。

    A a;
    A b;
int main()
{

    return 0;
}
root@th d3 # g++ L1.cpp                                                                              
root@th d3 # ./a.out                                                                                 
0x5597ed4a9131 :cosntructot
0x5597ed4a9132 :cosntructot
0x5597ed4a9132:destructor
0x5597ed4a9131:destructor

构造的顺序:先构造的后析构。
有可能后面东西要依靠前面的,而不是说局部变量在栈区,你看上面在全局区还是先构造的后析构。
构造函数中一般不进行大规模的内存申请,构造的时候如果出现了bug,后面的异常捕获不到,可以用一般的方法申请大块内存,然后在类中区调用这些方法,这些方法也叫做伪构造。

找变量遵循就近原则。
This在所有成员函数中都可以进行访问,不是无处不在。

匿名构造。转换构造。

New: 堆,程序运行的时候就有。

C++引用c中的头文件:把.h去掉,在前面加上一个c
#include

Java是用c++封装的。

计算机本身会自动帮我们写3个东西:默认的无参构造,默认拷贝构造,和默认的析构函数。如果自己定义了任何一个构造,计算机就不会提供默认的无参构造;如果自己定义了拷贝构造,计算机就不会提默认的拷贝构造;如果自己写了析构,计算机就不提供默认的析构。

函数调用:实参对形参进行初始化,不是赋值
const:只读。

lesson4:

lesson5:

lesson6:

举报

相关推荐

0 条评论