随笔分类 -  C++学习

最近我在看The C++ Programming Language(中文版)很有感触,其实 C语言只是C++的一个子集,另外,C++的核心在于它深刻的思想,C++的标准是一个十分有用的编程武器,而很多网络教程却很少涉及。
摘要:左移运算符重载 可以输出自定义数据类型 #include <iostream> using namespace std; class Person{ friend ostream& operator<<(ostream& out,Person &p); public: Person(int a, i 阅读全文
posted @ 2021-01-20 12:12 flyingswallow 阅读(210) 评论(0) 推荐(0)
摘要:###1.加号运算符重载 实现自定义数据类型的加运算 #include <iostream> using namespace std; class Person { public: int m_A, m_B; //1.成员函数重载+号 Person operator+(const Person &p 阅读全文
posted @ 2021-01-19 11:12 flyingswallow 阅读(230) 评论(0) 推荐(0)
摘要:###成员函数做友元 成员函数做友元和类做友元十分相似 示例: #include <iostream> #include <string> using namespace std; class Building; class goodGay { public: goodGay(); void vis 阅读全文
posted @ 2020-09-17 09:30 flyingswallow 阅读(437) 评论(0) 推荐(0)
摘要:类做友元 类做友元后可以访问另一个类的私有成员 示例: #include <iostream> #include <string> using namespace std; class Building; class goodGay { public: goodGay(); void visit() 阅读全文
posted @ 2020-09-16 01:47 flyingswallow 阅读(227) 评论(0) 推荐(0)
摘要:###全局函数做友元 生活中你的家有客厅(Public),有你的卧室(Private) 客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去 但是呢,你也可以允许你的好闺蜜好基友进去。 在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术 友元的目的 阅读全文
posted @ 2020-09-15 01:01 flyingswallow 阅读(134) 评论(0) 推荐(0)
摘要:const修饰成员函数 常函数: 成员函数后加const后我们称这个函数为常函数 常函数内不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 常对象: 声明对象前加const称该对象为常对象 常对象只能调用常函数 示例: #include <iostream> usi 阅读全文
posted @ 2020-09-10 23:09 flyingswallow 阅读(486) 评论(0) 推荐(0)
摘要:空指针访问成员函数 C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针; 如果用到this指针,需要加以判断保证代码的健壮性 示例: #include <iostream> using namespace std; //空指针访问成员函数 class Person{ publi 阅读全文
posted @ 2020-09-09 22:43 flyingswallow 阅读(446) 评论(0) 推荐(0)
摘要:this 指针 C++中成员变量和成员函数是分开存储的,每一个非静态成员函数只会诞生一份函数实例,也就是说 多个同类型的对象会共用一块代码区 问题:这一块代码是如何区分哪个对象调用自己的呢? C++通过提供特殊的对象指针,this指针,解决上述问题。 this指针指向被调用的成员函数所属的对象 th 阅读全文
posted @ 2020-09-09 00:01 flyingswallow 阅读(188) 评论(0) 推荐(0)
摘要:成员变量和成员函数分开存储 在C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上 示例: #include <iostream> using namespace std; class Person { public: Person() { m_A=0; } //非静态成员 阅读全文
posted @ 2020-09-08 23:42 flyingswallow 阅读(115) 评论(0) 推荐(0)
摘要:静态成员 静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员 静态成员分为: 静态成员变量 所有对象共享同一份数据 在编译阶段分配内存 类内声明,类外初始化 静态成员函数 所有对象共享同一个函数 静态成员函数只能访问静态成员变量 **示例1 :**静态成员变量 #include 阅读全文
posted @ 2020-09-07 23:32 flyingswallow 阅读(175) 评论(0) 推荐(0)
摘要:类对象作为类成员 C++类中的成员可以是另一个类的对象,我们称该成员为对象成员 例如: class A {}; class B { A a; } B类中有对象A作为成员,A为对象成员,那么当创建B对象时,A与B的构造和析构的顺序是谁先谁后? 示例: #include <iostream> #incl 阅读全文
posted @ 2020-09-07 23:23 flyingswallow 阅读(1203) 评论(0) 推荐(0)
摘要:初始化列表 作用: C++提供了初始化列表语法,用来初始化属性 语法: 构造函数():属性1(值1),属性2(值2),属性3(值3)...{} 示例: #include <iostream> using namespace std; class Person { public: //传统方式初始化 阅读全文
posted @ 2020-09-06 23:56 flyingswallow 阅读(151) 评论(0) 推荐(0)
摘要:深拷贝与浅拷贝 浅拷贝:简单的赋值拷贝操作 深拷贝:在堆区重新申请空间,进行拷贝操作 示例: #include <iostream> using namespace std; class Person{ public: //无参构造函数 Person(){ cout<<"无参构造函数!"<<endl 阅读全文
posted @ 2020-09-05 23:31 flyingswallow 阅读(173) 评论(0) 推荐(0)
摘要:构造函数调用规则 默认情况下,C++编译器至少给一个类添加3个函数 1.默认构造函数(无参,函数体为空) 2.默认析构函数(无参,函数体为空) 3.默认拷贝构造函数,对属性进行值拷贝 构造函数调用规则如下: 1. 如果用户定义有参构造函数,c++不在提供默认无参构造,但是会提供默认拷贝构造 2. 如 阅读全文
posted @ 2020-09-05 23:20 flyingswallow 阅读(480) 评论(0) 推荐(0)
摘要:拷贝函数调用时机 C++中的拷贝构造函数调用时机通常有三种情况 1.使用一个已经创建完毕的对象来初始化一个新对象 2.值传递的方式给函数参数传值 3.以值方式返回局部对象 示例: #include <iostream> using namespace std; class Person { publ 阅读全文
posted @ 2020-09-03 23:41 flyingswallow 阅读(451) 评论(0) 推荐(0)
摘要:构造函数的分类和调用 两种分类方式 1.按参数分为:有参构造和无参构造 2.按类型分为:普通构造和拷贝构造 三种调用方式 1.括号法 2.显示法 3.隐式转换法 示例: //1、构造函数分类 // 按照参数分类分为 有参和无参构造 无参又称为默认构造函数 // 按照类型分类分为 普通构造和拷贝构造 阅读全文
posted @ 2020-09-03 00:04 flyingswallow 阅读(505) 评论(0) 推荐(0)
摘要:构造函数和析构函数 对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始状态,对其使用后果是未知 同样的使用完一个对象或者变量,没有及时清理,也会造成一定的安全问题 c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。 对象的初始化 阅读全文
posted @ 2020-09-02 00:13 flyingswallow 阅读(170) 评论(0) 推荐(0)
摘要:成员属性设置为私有 优点1: 将所有成员属性设置为私有,可以自己控制读写权限 优点2: 对于写权限,我们可以检测数据的有效性 示例: #include <iostream> #include <string> using namespace std; class Person{ public: // 阅读全文
posted @ 2020-09-01 00:16 flyingswallow 阅读(771) 评论(0) 推荐(0)
摘要:struct和class的区别 在c++中struct和class唯一的区别就在于默认的访问权限不同 区别: struct 默认权限为公共 class 默认权限为私有 #include <iostream> using namespace sted; class C1 { int m_A; //默认 阅读全文
posted @ 2020-08-31 23:47 flyingswallow 阅读(151) 评论(0) 推荐(0)
摘要:C++权限: 类在设计的时候,可以把属性和行为放在不同的权限下,加以控制 访问权限有三种: 1.public 公共权限 2.protected 保护权限 3.private 私有权限 示例: //三种权限 //公共权限 public 类内可以访问 类外可以访问 //保护权限 protected 类内 阅读全文
posted @ 2020-08-29 23:59 flyingswallow 阅读(268) 评论(0) 推荐(0)