c++关于析构的那点小事(个人吐槽向

 1 #include<iostream>
 2 using namespace std;
 3 class test
 4 {
 5     int *i;
 6
 7 public:
 8     test(int n) { i = new int[n];}
 9     void func(int n) { test a(n);  a.f(); cout << endl; }
10     void f() { cout<<this<<endl; }
11     void shit(test x) { x.i = i; }
12     ~test() { cout << this << "被析构了" << endl; }
13 };
14 void main()
15 {
16     test b(3);
17     cout << "b  "; b.f();
18     cout << "b 中 a";b.func(5);
19     test c(6);
20     cout << "c  "; c.f();
21     cout << "c 中 a"; c.func(5);
22         b.shit(c);
23 }

 1 #include<iostream>
 2 using namespace std;
 3 class test
 4 {
 5     int *i;
 6
 7 public:
 8     test(int n) { i = new int[n];}
 9     void func(int n) { test a(n);  a.f(); cout << endl; }
10     void f() { cout<<this<<endl; }
11     void shit(test x) { x.i = i; }
12     ~test() { cout << this << "被析构了" << endl; }
13 };
14 void main()
15 {
16     test b(3);
17     cout << "b  "; b.f();
18     //cout << "b 中 a";b.func(5);
19     test c(6);
20     cout << "c  "; c.f();
21     //cout << "c 中 a"; c.func(5);
22         b.shit(c);
23 }

面向过程中子函数无论是否被调用都是先通过声明么?类中的函数均在程序build时被声明(函数体内部的语句并没有build,调用时才会)。所以

即使不调用类中除了构造和析构以外的成员函数。如果这些函数中有以类的对象为形参(非引用,引用不是对象)的成员函数,

时间: 2024-10-25 19:38:57

c++关于析构的那点小事(个人吐槽向的相关文章

构造器和析构器

一 构造器 swift的init方法是没有返回值的,而OC的init方法就有返回值,返回类本身 1.默认构造器 即使我们不写init方法,系统也会为函数默认写一个空的init方法 struct Fahrenheit {          var temperature:Double          init(){         temperature = 32.0     } } var f = Fahrenheit() 2.自定义构造器 struct Celsius {          

继承的构造和析构顺序

程序示例 1 #include <iostream> 2 using namespace std; 3 class a 4 { 5 public: 6 a(){cout<<"构造a"<<endl;} 7 ~a(){cout<<"析构a"<<endl;} 8 }; 9 class b 10 { 11 public: 12 b(){cout<<"构造b"<<endl;

C++多重继承中构造函数和析构函数调用顺序举例

//多重继承 #include <iostream> using namespace std; class A { public:     A()     {         cout<<"A基类构造A::A()"<<endl;     }     ~A()     {         cout<<"A基类析构A::~A()"<<endl;     } }; class B:public A { publi

一件小事

晚上本来因加班没有生活不开心,谁知道夜宵也没了:去随便拿了剩余的几样自己也不喜欢的东西超了1元钱,本来想退一样的,结果因为她激将法就多一元钱直中自己要害就不好意思退了,为此心情更不好,最主要是中了她的激将法,第二是多花了钱却得到了自己不想要对自己要害的事,最最重要的是我还在为这小事纠结. 成大事者不纠结,人生苦短不要让自己陷入这些琐事上,想象一下给自己定义一些大目标,因为你没有目标不为自己目标奋斗就是在为别人的目标奋斗,人生要为自己而活.先过好自己,再尽全力照顾好身边的亲友.

构造方法与析构方法区别

Java构造方法 类有一个特殊的成员方法叫作构造方法,它的作用是创建对象并初始化成员变量.在创建对象时,会自动调用类的构造方法.构造方法定义规则:Java 中的构造方法必须与该类具有相同的名字,并且没有方法的返回类型(包括没有void).另外,构造方法一般都应用 public 类型来说明,这样才能在程序任意的位置创建类的实例也就是对象.示例:下面是一个 Rectangle 类的构造方法,一个是带有两个参数,分别表示矩形的长和宽: 另一个是不带参数:public class Rectangle {

C++ 类的继承三(继承中的构造与析构)

//继承中的构造与析构 #include<iostream> using namespace std; /* 继承中的构造析构调用原则 1.子类对象在创建时会首先调用父类的构造函数 2.父类构造函数执行结束后,执行子类的构造函数 3.当父类的构造函数有参数时,需要在子类的初始化列表中显示调用 4.析构函数调用的先后顺序与构造函数相反 继承与其他类做成员变量混搭的情况下,构造和析构嗲用原则 1.先构造父类,在构造成员变量,最后构造自己 2.先析构自己,再析构成员变量,最后析构父类 */ clas

学习Swift -- 析构过程

析构过程 析构器只适用于类类型,当一个类的实例被释放之前,析构器会被立即调用.析构器用关键字deinit来标示,类似于构造器要用init来标示. 原理 Swift 会自动释放不再需要的实例以释放资源,Swift 通过自动引用计数(ARC)处理实例的内存管理.通常当你的实例被释放时不需要手动地去清理.但是,当使用自己的资源时,你可能需要进行一些额外的清理.例如,如果创建了一个自定义的类来打开一个文件,并写入一些数据,你可能需要在类实例被释放之前手动去关闭该文件. deinit { // 在这里实现

C++ 类、构造析构、深拷贝

1st,感性理解类的思想,就是把数据和对数据的操作打包在一块儿,设计类的时候要 想好数据部分和 要进行的操作.以下是时间类的示意,时间包含时分秒,Time为构造函数,该类支持的操作就是设置时间和读取时间,static类型记录对象数量,static机制查询相关书籍. //Time.h #ifndef Time_h #define Time_h class Time { public: Time(int h = 0, int m = 0, int s = 0); void SetTime(int,

2016/2/17 寄一件小事

//和计算机没关系的小事 //期待遇见 //难忘又怀念 //走了不会想念 晚上突然有人加我微信,说是我的小学同学. 根据各类电视剧电影小说的情节,自行脑补后,是男生也(* ̄︶ ̄)y,会不会冒出一段回忆里联系起来的陌生的熟悉的这些那些懵懂的好感来啊 可是然并 他说,你电话多少,我存起来呀 我就告诉他了 他又说,你也存下我的吧 我不近人情,我又不会打给你 他还说,他叫***,小时候还去过我家呢,说起了他妈,还说起了我妈. 我看着这个已经陌生得十分干净的名字,差点以为他要找我相亲了 今年去上班的第一天