![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++基础学习
Ambition_TNT
您好
展开
-
c++多态
多态多态是C++面向对象三大特性之一封装、继承、多态多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址多态满足的条件:有继承关系子类重写父类中的虚函数多态使用:父类指针或引用指向子类对象重写:函数返回值类型 函数名 参数列表 完全一致称为重写class Animal{原创 2021-06-02 15:53:27 · 88 阅读 · 0 评论 -
C++菱形继承
菱形继承基本概念:两个派生类继承同一个基类 又有某个类同时继承者两个派生类 这种继承被称为菱形继承,或者钻石继承。就会产生二义性的问题。需要在继承前加一个virtual就可以了。class Animal{public: int m_Age;};//继承前加virtual关键字后,变为虚继承//此时公共的父类Animal称为虚基类class Sheep : virtual public Animal {};class Tuo : virtual public Animal原创 2021-05-31 17:47:39 · 123 阅读 · 0 评论 -
C++多继承语法
C++是支持多继承的语法: class 子类:继承方式 父类1,继承方式 父类2…多继承可能会引发父类中有同名成员出现,需要加作用域区分,C++实际开发中不建议用多继承class Base1{public : Base1() { p_a = 100; } int p_a;};class Base2{public: Base2() { p_b = 200; } int p_b;};class Base3{public: Base3() {原创 2021-05-31 17:33:39 · 115 阅读 · 0 评论 -
继承同名静态成员处理方式
在C++中,继承中同名的静态成员在子类对象上如何进行访问?静态成员变量所以对象共享一份数据在编译阶段分配内存类内声明,类外初始化静态成员变量所以对象共享同一个函数静态成员函数只能访问静态成员变量静态成员和非静态成员出现同名,处理的方法是一样的访问子类同名成员 直接访问即可访问父类同名成员 需要加作用域class Base{public: Base() { cout << "构造一个Base类对象" << endl;原创 2021-05-31 17:22:52 · 88 阅读 · 0 评论 -
C++继承同名成员处理方式
继承同名成员处理方式访问子类同名成员, 直接访问就可以访问父类同名成员 需要加作用域在C++中 如果子类成员与父类成员同名时,子类会隐藏父类的同名成员。当子类与父类拥有同名的成员函数,子类会隐藏父类中所有版本的同名成员函数如果想访问父类中被隐藏的同名成员函数,需要加父类的作用域例如:class Base{public: Base() { m_A = 100; cout << "构造一个Base类对象" << endl; } ~Base() {原创 2021-05-31 17:07:15 · 224 阅读 · 0 评论 -
C++继承中构造和析构顺序
继承中构造和析构顺序子类继承父类后,当创建子类对象,也会调用父类的构造函数。这个时候就会先构造父类,在构造子类,正所谓:现有先有父亲在有儿子。而析构的顺序恰恰想反,要先析构儿子在析构父亲。class Base{public: Base() { cout << "构造一个Base类对象" << endl; } ~Base() { cout << "析构一个Base类对象" << endl; }};class Son :publi原创 2021-05-31 16:53:09 · 361 阅读 · 0 评论 -
C++对象模型,查看对象内存布局
对象模型我们可以查看C++中对象继承的内存大小。可以利用vs自带的DOS系统进行查看如:#include<iostream>using namespace std;class Base{public: int m_A;protected: int m_B;private: int m_C; //私有成员只是被隐藏了,但是还是会继承下去};//公共继承class Son :public Base{public: int m_D;};void test(原创 2021-05-31 09:55:20 · 512 阅读 · 0 评论 -
c++继承(继承方式,对象模型)
继承方式继承有三种方式:public:父类的public属性依然是public属性,父类的protected属性依然是protected属性protected 父类成员为子类成员的protected属性,父类的public属性到子类为protected属性private 父类成员为子类成员的private属性,父类的public属性到子类为private属性应该要注意,父类的私有成员并没有传给子类class Base{public: int Base_A; protec原创 2021-05-31 09:54:00 · 183 阅读 · 1 评论 -
C++继承
继承继承是面向对象三大特性之一继承的好处:可以减少重复的代码class A : public B;A 类称为子类 或 派生类B 类称为父类 或 基类派生类中的成员,包含两大部分:一类是从基类继承过来的,一类是自己增加的成员。从基类继承过过来的表现其共性,而新增的成员体现了其个性。...原创 2021-05-28 17:20:16 · 58 阅读 · 0 评论 -
运算符重载
运算符重载基本概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。加号运算符重载作用:实现两个自定义数据类型相加的运算class Person {public : Person() {};//无参构造函数 Person(int a, int b) { this->A = a; this->B = b; } /*Person operator+(const Person & p) { Person temp; temp.A =原创 2021-05-28 17:15:16 · 110 阅读 · 0 评论 -
C++友元
友元在程序中,有些私有属性,也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。友元的目的就是让一个函数或者类 访问另一个类中私有成员关键字:friend友元的三种实现:全局函数做友元类做友元成员函数做友元class House{ //告诉编译器visitHouse全局函数,是House的friend,可以访问私有成员 friend void visitHouse(House* house); //告诉编译器class Host是House的好朋友,可以访问本类的成员原创 2021-05-26 16:17:05 · 61 阅读 · 0 评论 -
C++类的特性--初始化列表
初始化列表作用:C++提供了初始化列表语法,用来初始化属性语法:构造函数():属性1(值1),属性2(值2)… {}class Person{private: int A; int B; int C; public: Person(int a,int b,int c):A(a),B(b),C(c) {} void PrintPerson() { cout << "A" << A << endl; cout << "B" &l原创 2021-05-26 14:47:18 · 79 阅读 · 0 评论 -
C++类的特性---对象的初始化和清理
对象的初始化和清理生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全C++中的面向对象来源于生活,每个对象也都会有初始设置以及 对象销毁前的清理数据的设置。构造函数和析构函数对象的初始化和清理也是两个非常重要的安全问题。 一个对象或者变量没有初始状态,对其使用后果是未知。 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题。c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。对转载 2021-05-26 14:46:08 · 75 阅读 · 0 评论 -
类和对象,类的特性
概述C++面向对象的三大特性为:封装、继承、多态C++认为万事万物都皆为对象,对象上有其属性和行为例如: 人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌… 车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐、放空调… 具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类封装封装的意义封装是C++面向对象三大特性之一将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制封装意义一:在设计类的时候,属性和行为写转载 2021-05-24 17:51:06 · 199 阅读 · 0 评论 -
函数提高
函数默认参数在C++中,函数的形参列表中的形参是可以有默认值的。当调用函数时,可以如果没有传入参数,函数就会用它的默认形参 。语法:返回值类型 函数名 (参数=默认值){ }例子:int func01(int a, int b = 100, int c = 90){ return a + b + c;}int func02(int a = 10, int b = 90);int func02(int a , int b){ return a + b;}void test01原创 2021-05-24 10:58:21 · 83 阅读 · 0 评论 -
new操作符
C++中利用 new操作符在堆空间开辟数据。堆区开辟的数据,由程序员手动开辟,手动释放,释放利用操作符 delete语法:new 数据类型说明:利用new创建的数据,会返回该数据对应的类型的指针举个例子:int* test(){ int* a = new int(100); return a; }int main(){ int* p=test(); cout<<*p<<endl; cout<<*p<<endl; //利用del原创 2021-05-24 09:18:13 · 131 阅读 · 0 评论 -
C++内存分区&引用详解(超详细)
C++内存分区代码区:存放函数体的二进制代码,由OS系统进行管理全局区:存放变量的静态变量以及常量栈区:由编译器自动分配释放,存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时OS回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程2.3示例:引用注意事项引用必须初始化引用在初始化后,不可以改变int main() { int a = 10; int b = 20; //int &c; //错误,引转载 2021-05-22 20:42:38 · 118 阅读 · 0 评论 -
C++基础编程第一部分-通讯录管理系统
**1、系统需求通讯录是一个可以记录亲人、好友信息的工具。本教程主要利用C++来实现一个通讯录管理系统系统中需要实现的功能如下:添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人显示联系人:显示通讯录中所有联系人信息删除联系人:按照姓名进行删除指定联系人查找联系人:按照姓名查看指定联系人信息修改联系人:按照姓名重新修改指定联系人清空联系人:清空通讯录中所有信息退出通讯录:退出当前使用的通讯录#include <iostream原创 2021-05-04 16:40:53 · 88 阅读 · 0 评论 -
C++基础学习(数据类型,标准输入输出,运算符)
c++数据类型+基本运算语法具体内容在代码注释#include <iostream>#include <string>using namespace std;int main() { /* (一)变量 变量存在的意义:方便我们管理内存空间 数据类型 变量名 = 变量的初始值; 找到一个内存空间,大小为数据类型的大小,然后将它重命名为 变量名 最后再给他赋值一个值 */ /* (二)变量的取名: 1.不能是关键字 2.只能由数字、字母、原创 2021-01-25 19:37:49 · 168 阅读 · 0 评论