- 博客(7)
- 收藏
- 关注
原创 C++运算符重载
1.只能是成员的运算符:“ = ”, “()”, “ || ”, “ -> ”。2.只能是友元的运算符:“ << ”, “ >> ”(第一个参数只能是ostream或istream)。3.既可以是友元的也可以是成员的:“ + ”, “ - ” 等。4.不可以重载的运算符:.、:: 、.* 、sizeof、?:、const_cast、dynamic_cast、reinterpret_cast、static_cast、typeid。重载赋值运算符= :...
2022-05-10 19:54:27
218
原创 C++中构造函数调用时的类型转换
C++中构造函数共有三种调用方法:1.括号法:类名 对象名(参数)2.显式调用:类名 对象名 = 类名(参数)3.隐式调用 :类名 对象名 = 参数#include <iostream>// 预处理命令using namespace std; // 使用标准命名空间stdclass A { //测试类public: A(int i = 1):num(i) { cout << "构造" << endl; } A(A const&
2022-05-02 14:59:14
716
原创 C++析构函数防止内存泄漏的注意事项
C++中如果程序员没有自己定义析构函数,那么系统会提供一个默认的析构函数,但是在释放对象时,默认的析构函数只能释放该对象本身所占用的内存空间,而对象内部所指向的内存空间没有被释放,久而久之容易造成程序的卡顿甚至崩溃。因此如果对象内部的指针指向了其他空间,我们想要在释放对象的同时释放其内部指向的空间,就需要自己定义析构函数。代码如下:#include <iostream>// 预处理命令using namespace std; // 使用标准命名空间stdclass A {p
2022-05-02 13:53:38
1300
原创 C++几种错误的输出
malloc和new:构造函数未调用,输出cdcdcdcd(16进制)首先malloc是一个函数,在调用时只会申请一块空间,但不会调用构造函数进行初始化,而new是一个操作符,在申请空间时还会自动调用构造函数。如果使用malloc申请空间,此时对象内部的int类型数据成员以十六进制输出为:cdcdcdcd ,转换为二进制码为1100 1101重复四次(四个字节)。析构函数已调用:输出dddddddd(16进制)当对象的析构函数调用完成后,再次输出内部的int类型数据成员,以十六进制输出结果为
2022-05-02 13:38:05
1840
原创 C++不同类型对象的构造、析构顺序
全局对象:由于全局对象可能在文件中的不同地方被调用,因此编译器会优先编译全局对象,也就是说,全局对象先于主函数产生,放在全局区(或称静态区,地址由低到高),待整个程序运行完后析构释放。静态对象:静态对象只会在首次调用时构造一次,之后再次调用会跳过构造,与全局对象有相同的生存期,放在全局区,待整个程序运行完后析构释放。如下方代码调用多次只有第一次会构造静态变量:#include <iostream>// 预处理命令using namespac...
2022-04-29 20:02:40
738
2
原创 C++名空间以及嵌套类注意事项
博客为本人原创,刚接触C++,作为学习笔记使用,如有错误请各位多批评!1.名空间相当于人为定义一个作用域,解决了名称冲突的问题,在大项目中有重要意义。2.使用方法:(1)名::调用对象(2)声明 using 名::对象(3)using namespace 名(类似友元类)3.(2)(3)两种方式区别在于第二种声明后如果在本作用域下声明同名内容,编译无法通过,相当于重复定义;而第三种只是说我这个作用域可以使用声明的作用域里面的内容,当在本作用域声明同名内容时,不会发生冲突,而是会覆盖其
2022-04-29 00:20:31
579
2
原创 C++加号运算符重载的测试过程
博客内容为本人原创,做为平时学习笔记用,本人刚刚接触C++,水平有限,希望各位多批评!编译环境为VS;先上测试代码:#include <iostream>using namespace std;class A {public: int s; A(int k) { s = k; cout << k << "A running" << endl; } //有参 A(c...
2022-04-26 17:20:04
870
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人