- 博客(17)
- 资源 (2)
- 收藏
- 关注
原创 C++多态--基本概念--原理--案例1--纯虚函数和抽象类--案例二--虚析构和纯虚析构--案例三
多态是C++面向对象三大特性之一多态分为两类静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态和动态多态的区别:静态多态的函数地址早绑定-编译阶段确定函数地址动态多态的函数地址晚绑定-运行阶段确定函数地址动态多态1.有继承关系2.子类要重写父类虚函数这里的重写是要 函数名一样,函数返回类型一样,函数参数列表一样动态多态使用父类的指针或者引用,指向子类对象#include<iostream>#include<str
2021-02-13 13:59:23 242 1
原创 指针函数和函数指针
函数指针就是 一个指针,指向函数的 例如void (*pfuc)(参数)=fuc;指针函数就是返回类型为指针,跟整形函数似的详细的看这
2021-02-07 12:20:03 68
原创 C++继承-基本语法--继承方式--继承同名成员处理方式--多继承语法--菱形继承
1.基本语法继承:减少重复代码语法:class 子类:继承方式 父类子类也叫派生类,父类也叫基类派生类中的成员包括两大部分一类是从基类继承过来的,一类是自己增加的成员。从基类继承过来的表现其共性,而新增的成员体现了其个性。#include<iostream>#include<string>using namespace std;class BasePage {//基类public: void header() { cout << "1" <
2021-02-06 21:48:33 556
原创 C++函数调用运算符重载+匿名对象
函数调用运算符()也可以重载由于重载后使用的方式非常像函数的调用,因此称为仿函数仿函数没有固定的写法#include<iostream>#include<string>using namespace std;class Myprint {public: //重载函数调用运算符 void operator()(string text) { cout << text << endl; } int operator()(int a,int
2021-02-04 19:35:13 303
原创 C++关系运算符重载
关系运算符==的重载#include<iostream>#include<string>using namespace std;class Person {public: Person() { } Person(string name,int age) { m_Name = name; m_Age = age; } bool operator==(Person&p) {//返回引用用来返回自身 if (this->m_Name ==
2021-02-04 18:33:41 136
原创 C++递减运算符重载
#include<iostream>#include<string>using namespace std;//通过全局函数重载class MyInteger { friend ostream&operator<<(ostream &cout, MyInteger m);public: MyInteger() { m_Num = 0; } //重载前置--运算符 MyInteger& operator--() {
2021-02-03 22:52:40 181
原创 C++递增运算符重载,另附cout输出流顺序
递增运算符++先看一下它的内置运算原理int a=10;cout<<++a<<endl//结果11cout<<a<<endl//11int b=10;cout<<b++<<endl;//10cout<<b<<endl;//11先建立一个类class MyInteger{public: MyInteger(){ m_Num=0; } private: int m_Num;}分
2021-02-03 22:30:39 310
原创 C++运算符重载左移运算符重载
所谓左移运算符就是cout<<这个的箭头似的运算符重载它所实现的功能为就是你类里面有两个变量,然后你想通过输出一个对象,就能一下子将这两个变量都输出出去运算符重载所注意事项1.方式:成员函数重载全局函数重载2.关键字 operator这个有点像照猫画虎一样区别就在于如果这样写void operator<<(cout)//其结果p.operator<<(cout)简化版本就是p<<cout和咱们要的结果cout<<p;方向不一
2021-02-03 15:44:47 676
原创 C++运算符重载---加号运算符重载
运算符重载概念:对已有的运算符重新定义,赋予其另一种功能,以适应不同的数据类型。4.5.1加号运算符重载作用:实现两个自定义数据类型相加的运算实现两个对象相加其实你自己可以写一个有这个作用的函数//通过自己写成员函数,实现两个对象相加属性后返回新对象 Person PersonAddPerson(Person &p) { Person temp; temp.m_A = this->m_A + p.m_A; temp.m_B = this->m_B + p.m_B;
2021-02-03 15:13:32 1013
原创 C++友元
友元的目的就是让一个函数或者类访问另一个类中私有成员友元的关键字 friend友元的三种实现全局函数做友元类做友元成员函数做友元全局函数做友元当然也可以写成引用的形式全局函数是不能访问类中的私有成员的,这时要想其能访问就要在类中将这个函数声明为友元函数friend void goodGay(Building *building);`````cpp#include<iostream>#include<string>using namespace st
2021-02-02 10:29:53 242
原创 const修饰成员函数
常函数:成员函数后加constvoid showPerson()const{}特性:常函数内不可以修改成员属性成员属性生命是加关键字mutable后,在常函数中依然可以修改常对象:声明对象前加const称该对象为常对象常对象只能调用常函数#include<iostream>#include<string>using namespace std;class Person {public: //this指针的本质,是指针常量,指针的指向是不可以修改的,这里指针
2021-02-02 10:09:13 218
原创 空指针访问成员函数
#include<iostream>#include<string>using namespace std;class Person {public: void showClassName() { cout << "this is person class" << endl; } void showPersonAge() { //报错原因:你传入的指针为空 if (this == NULL) { return;//可以用这种判断
2021-02-01 14:57:00 186
原创 C++this指针
this指针的用途:this指针式C++的特殊的对象指针,可以用来区分哪个对象调用的相应的代码。所以this指针指向被调用的成员函数所属对象。谁调用this就指向谁this指针是隐含每个非静态成员函数内的一种指针this指针不需要定义,直接使用即可this指针的用途:当形参和成员变量同名时,可以用this指针来区分在类的非静态成员函数中返回对象本身,可用returnthis(this是个指针,指向对象,如果加个则表示这个对象)//1.解决名称冲突#include<iostream
2021-02-01 14:44:41 79
原创 成员变量和成员函数是分开存储的
#include<iostream>#include<string>using namespace std;class Person {public:};void test01() { Person p; cout << "空对象所占内存空间" << sizeof(p) << endl;}int main() { test01(); return 0;}//C++编译器会给每个空对象也分配一个字节空间,是为了区分空对象
2021-02-01 14:21:46 187
原创 C++类对象作为类成员
#include<iostream>#include<string>using namespace std;class Phone {public: Phone(string pname) { m_pname = pname; cout << "Phone的构造函数调用" << endl; } string m_pname;};class Person {public: Person(string name, string pn
2021-02-01 11:35:53 322
原创 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换)”的处理
#include<iostream>using namespace std;class Phone {public: Phone(string pname) { m_pname = pname; } string m_pname;};class Person {public: Person(string name, string pname):m_name(name),m_phone(pname) { } string m_name; Phone m_phone
2021-02-01 10:47:47 717 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人