
C++
文章平均质量分 51
一眼半生筹zzZ
学习记录
展开
-
C++ RTTI、dynamic_cast、typeid
一、dynamic_cast主要作用是将父类指针(引用)转换为子类指针(引用)int main(){ //一、dynamic_cast: human *phuman = new man; human &p = *phuman; phuman->eat();//eat()为虚函数,则可以调用 //phuman->sleap(); 基类指针不能直接调用子类的非虚成员函数 ((man*)phuman)->sleep();//C语言转换方法,将基类指针转换为子原创 2022-02-26 23:21:15 · 433 阅读 · 0 评论 -
C++ 基类指针、虚纯虚函数、多态性、虚析构
一、基类指针原创 2022-02-22 23:08:59 · 680 阅读 · 0 评论 -
C++ 类继承 父类 子类 函数遮蔽
一、派生类 类之间有种层次关系,有父类、子类。 比如车这个类,当成父类(也叫基类、超类)派生出卡车、轿车,他们属于子类/派生类继承:子类可以继承父类的成员函数、变量子类对象创建时,先执行父类构造函数,在执行子类构造函数二、访问权限:public protected private 三、函数遮蔽:在子类中,有与父类同名的函数,那子类无法访问父类的同名函数 有两种方法可以解决:(1)、在子类中的同名函数中去调用父类函数(2)使用usin...原创 2022-02-12 16:42:29 · 730 阅读 · 0 评论 -
C++ 重载运算符 、析构函数、重载
重载运算符:本质上是一个函数,函数名 operator+运算符(>,<,+,-,=,==,>=,<=等) 有些运算符,我们没有对该运算符进行重载,系统会自动生成该运算符的重载,比如赋值运算符 = Time mytime5(10, 20, 30);//这个调用默认构造函数(无参数) Time mytime6;//这个调用默认构造函数(无参数) mytime6 = mytime5;//这个调用拷贝赋值运算符,如果没有自己定义,编译器自动生成...原创 2022-02-12 13:54:28 · 1134 阅读 · 0 评论 -
C++ 拷贝构造函数
定义:如果一个类的构造函数的第一个参数是所属类类型的引用,而其他参数都有默认值,这个构造函数就是拷贝构造函数。函数的默认参数必须放在函数声明中,除非该函数没有函数声明。Time.h#ifndef _TIME_H#define _TIME_H#include<iostream>using namespace std;class Timeclass{public: Timeclass() { cout << "调用了Timeclass默认构造..原创 2022-02-11 17:04:29 · 507 阅读 · 0 评论 -
C++ 指针与引用的区别
C++primer中对 对象的定义:对象是指一块能存储数据并具有某种类型的内存空间一个对象a,它有值和地址&a,运行程序时,计算机会为该对象分配存储空间,来存储该对象的值,我们通过该对象的地址,来访问存储空间中的值指针p也是对象,它同样有地址&p和存储的值p,只不过,p存储的数据类型是数据的地址。如果我们要以p中存储的数据为地址,来访问对象的值,则要在p前加解引用操作符"*",即*p。对象有常量(const)和变量之分,既然指针本身是对象,那么指针所存储的地址也有常量和变量...原创 2022-02-10 09:07:37 · 98 阅读 · 0 评论 -
C++基本语言 类型转换
1、static_cast静态转换,在编译的时候就完成。用法和C里面的强制类型转换一样double f=100.34f;int i=(int)f;//C语言风格int i2=static_cast<int>(f);//C++风格2、dynamic_cast主要应用于 运行时类型转换和检查。主要用于父类型和子类型之间转换3、const_cast去除指针或引用的const属性const int ai=90;//int ai2=const_cast<int原创 2022-01-26 14:33:46 · 680 阅读 · 0 评论 -
C++ 语言 迭代器失效
一:送代器简介vector,迭代器是一种遍历容器内元素的数据类型,这种数据类型感觉有点像指针,我们理解的时候就理解为迭代器用来指向容器中的某个元素。string, vector [],很少用[],更常用的访问方式就是用迭代器(更通用)。通过迭代器,我们就可以读容器中的元素值,读string中的每个字符,还可以修改某个迭代器所指向的元素值。类似于++,--等操作list, map ,尽量学会用迭代器来访问容器中的元素。二:容器的迭代器类型...原创 2021-11-23 13:26:36 · 913 阅读 · 0 评论 -
C++语言 vector类型介绍
本文的主要内容:(1)vector类型简介(2)定义和初始化vector对象(3)vector对象上的操作以及范围for进一步讲解原创 2021-11-22 12:53:06 · 1603 阅读 · 0 评论 -
C++语言 string
string 定义与初始化string可以看做一个类类型,类似于c中的结构体我们来看一下如何初始化一个string对象,有如下几种方法:也可以直接用字符数组初始化#include<string>//要加上头文件int main(){ int num = 4; string s1 = "I Love China!"; string s2("I Love China!"); string s3 = s2; string s4(num, 'a');//s4=aaaa,相当于原创 2021-11-20 17:57:48 · 556 阅读 · 0 评论 -
C++语言 const char * 、char const * 、char* const的区别
1、const char * 、char const *这两者是等价的。当我们使用char const *定义一个指针变量时,我们可以使这个指针变量指向别的char型的变量,但不能通过指针来修改这个char的值。但是可以使这个指针指向别的变量。例如:#include "pch.h"#include <iostream>using namespace std;int main(){ char str[] = "I Love China!";//定义一个字符串数组 const原创 2021-11-19 18:56:09 · 1710 阅读 · 0 评论 -
C++基本语言 内联函数 、const
一、后置返回类型 就是把函数的返回值放在参数列表后面 格式:auto func(int a)->int;//声明 二、内联函数: 在函数定义前增加关键字 inline 当函数体很小时,调用很频繁,改为内联函数,提升效率,普通函数调用时,会进行入栈出栈操作,定义为内联函数后,编译器会根据情况(决定权在编译器),在编译时将调用函数处替换为函数体内的语句,避免了入栈出栈操作。内联函数的定义要放在头文件中(.h文件),这样需要用到这个内联函数的.cpp...原创 2021-10-11 21:52:04 · 172 阅读 · 0 评论 -
C++基本语言 范围for new内存动态分配 nullptr
一、范围for语句,用于遍历一个序列 int v[] {12, 13, 14, 15}; //for (auto x : v)//数组v中每个元素依次拷贝x中,打印x的值 for(auto &x : v)//x成了v的引用,省略拷贝动作,提高效率 { cout << x << endl; } for (auto x : { 10,20,30,40 }) { cout <&l...原创 2021-10-10 17:36:36 · 196 阅读 · 0 评论 -
C++基本语言 引用 常量
#include "pch.h"#include <iostream>namespace zhangsan{}void func(int &a, int &b)//参数为引用类型,可以改变外部的值{ a = 5; b = 6;}using namespace std;int main(){ int x=9; std::cout << "Hello World!\n"; std::cout <...原创 2021-10-09 21:56:56 · 412 阅读 · 0 评论