随笔分类 - c++中的类和对象
摘要:函数对象:一个类重载了()它的对象可像函数一样使用 结果:
阅读全文
摘要:运算符重载:给运算符赋予新含义(运算符只能运算内置的数据类型,自定义的数据类型不能运算) 运行结果:
阅读全文
摘要:MyArray.h MyArray.cpp testmyarray.cpp 运行结果:
阅读全文
摘要:友元函数:让全局函数或类的成员函数访问私有成员 让全局函数成为友元函数: class person{ friend void show(person&p); private : int age; }; void show(person &p){ cout<<p.age=10<<endl; } 类成为
阅读全文
摘要:this指针的工作原理:类的成员函数(存放在代码区只有一份)默认添加了一个参数(类型*const this)指向调用该函数的对象 常函数(const修饰的成员函数):不能通过this指针修改this指向的对象内容(const person *const this) class person(){ p
阅读全文
摘要:注意:1、空类大小为一字节 2、类的实例化对象的内存大小只包含普通变量 3、静态成员变量储存在静态全局区,静态成员函数和普通成员函数存放在代码区故类的实例化对象不包含其大小 #include <iostream>using namespace std;class ming {public: int
阅读全文
摘要:单例模式:一个类只能实例化出一个对象 步骤:1、将有参构构造和拷贝构造私有 2、将静态成员指针私有并指向唯一的对象 3、提供一个静态成员函数将唯一的对象地址返回
阅读全文
摘要:在类的定义中,它的成员包括(成员变量、成员函数),都可用static修饰成静态成员 不管类创建了多少个对象,静态成员都只有一个拷贝这个拷贝属于中国类的对象的共享 静态成员变量: 1、内存中只有一份,多个对象共用一块内存 2、类内只能定义不能初始化(限定作用域)定义在全局 3、可通过对象和作用域访问
阅读全文
摘要:c中的动态申请:用malloc、free动态申请、释放内存不会调用构造函数和析构函数(一般c++中不能使用他们来动态申请和释放内存) c++中的动态申请、释放: 申请:类型 * p=new 类型; delete p; (数组: 类型 * p=new 类型[]; delete []p;) delete
阅读全文
摘要:类中有多个对象时: 构造:先构造里面的对象再构造外面的对象 析构:先析构外面的对象再析构里面的对象 #include <iostream> #include<string.h> #include<string> using namespace std; class phone{ public : p
阅读全文
摘要:初始化列表:构造函数相较与普通函数特有 与普通构造函数初始化的区别:普通构造函数为先定义后赋值而初始化列表是先声明在调用构造函数是定义后初始化 注意:初始化顺序和声明顺序相一致 class person{ public : person(int a,int b,int c): m_a(a),m_b(
阅读全文
摘要:浅拷贝:简单的值拷贝默认拷贝构造就浅拷贝 浅拷贝可能会出现的问题:简单的值拷贝可能会造成新旧对象的指针指向同一处内存当析构函数销毁对象时有会出现找不到地址可用销毁导致程序崩溃 解决方式:深拷贝:让新对象的指针指向新内存 class person{ public : person(){} person
阅读全文
摘要:构造:创建对象时对其进行初始化工作 析构:销毁对象时对其进行清理工作 注意:1、一般需要人为提供,若无提供编译器会自动提供(不做任何操作),无需人为调用调用时编译器自动调用 2、构造函数:函数名与类名一致无返回值不能写void可易有参数可用重载 3、析构函数:函数名等于类名前加~无返回值不能写voi
阅读全文
摘要:设计一个点和圆类,并判断两者的关系。 代码: class point{ public : void set_x(int X){x=X; } void set_y(int Y){ y=Y;} int get_x(){return x;} int get_y(){return y;} private :
阅读全文
摘要:类:事物所具有的共性(行为、属性)抽象出来封装在一起 对象:由类型实例化出对象 c++与c struct的区别:c中不能存放函数,只能存放属性,方法和属性分离,c++中则可存放函数。 c中表示事物的方法存在问题:方法属性分离,可能会出现行为调用出错(调用到不属于它的行为) c++对事物的封装-类:1
阅读全文
摘要:一:新增bool类型关键字:c中bool类型需要添加stdbool.h头文件,c++则可直接使用 void test(){ bool a=true; //c++可直接定义而c需添加头文件 true和false可直接用做常量使用 } 二:三目运算符:c++中返回的可以是个变量,但c语言中返回的表达式的
阅读全文