C++学习
baobao1767640830
这个作者很懒,什么都没留下…
展开
-
c++动态内存管理
介绍malloc、calloc和realloc1.malloc函数,其原型如下void *malloc(size_t size);malloc所分配的是一块连续的内存,其参数就是需要分配的内存字节数。如果分配成功,则返回指向这块内存的指针;如果分配失败,则返回NULL指针2.calloc函数,其原型如下void *calloc(size_t num_elements, size_t size_element);calloc函数也是分配内存的,其参数包含所需元素的个数和每个元素的字节大小,将对分配转载 2020-05-19 20:51:24 · 258 阅读 · 0 评论 -
c++类与对象2
隐含的this指针性质:每个成员函数都有一个指针形参,它的名字是固定的,称为this指针,this指针是隐式的(为何构造函数除外?)。成员函数隐含指针形参,是编译器自己处理的,不能在成员函数的形参中添加this指针的参数定义,也不能在调用时显示传递对象的地址给this指针。传递方式:对象地址作为实参传递给成员函数的第一个形参this指针。存放位置:this指针在对象调用成员函数前创建,在成员函数调用结束后销毁,所以this指针存放在栈上。类的默认成员函数1、构造函数有参和无参的构造函数clas原创 2020-05-19 17:08:02 · 107 阅读 · 0 评论 -
c++之迭代器
迭代器的概念提供一种方法,使之能够依次寻访某个容器所包含的所有元素,而又无需暴露该容器底层的结构。迭代器的本质迭代器实际是一种行为类似指针的对象,因此指针的所有操作迭代器都支持,使用迭代器时向使用指针一样去使用。比如:指针的解引用、成员访问、前置/后置++、前置/后置–、==、!=等迭代器支持,但是迭代器是一种行为类似指针的新类型,因此迭代器的实际只需将指针的上述操作在类中重载即可(以后补充代码示例)迭代器的实现迭代器是算法和容器的粘合剂,同一个算法可以操作不同类型的容器,而容器类型不同,意味原创 2020-05-17 20:45:54 · 227 阅读 · 0 评论 -
C++类与对象
类的概念类是一种复杂的数据类型,它是将成员变量成员函数)封装在一起的集合体。这与C语言中的结构体相似对象的概念对象指的是类的实例。将对象作为程序的基本单元,将数据和程序封装在一起,以提高软件的重用性、灵活性、和扩展性面向对象的三大特性封装性、继承性、多态性访问限定符 1. public成员可从类外部直接访问,private/protected成员不能从类外部直接访问。 2. protected限定的函数和数据,只有继承者和受保护的成员可以使用 3. private限定的函数和数据,原创 2020-05-17 19:38:39 · 159 阅读 · 0 评论 -
类的默认成员函数
类默认生成的成员函数有六个: 构造函数、 拷贝构造函数、 析构函数、 赋值操作符重载、 取地址操作符重载 const修饰的取地址操作符重载构造函数1.概念:初始化对象,有且仅在定义一个对象时自动执行一次的函数,就称为构造函数。2.特性a.函数名与类名相同。b.无返回值。c.实例化对象时系统会自动调用对应的构造函数。d.构造函数可以重载。e.构造函数可以在类内定义,也可以在类外定义。在类外定义时的格式:类名+“::”+函数名。f.如果...原创 2020-05-16 15:43:21 · 985 阅读 · 1 评论 -
c++引用与指针
引用概念引用不是定义一个变量,而是给一个已经定义的变量重新起一个别名引用的定义格式:类型&引用变量名=已定义过的变量名。引用的特点:1)一个变量可用多个别名;2)引用必须初始化;3)引用只能在初始化的时候引用一次,不能改变为再引用其他的变量。代码:#include<iostream>using namespace std;int main(){ int a = 10; int b = 11; int& c = a; int&原创 2020-05-16 11:01:05 · 122 阅读 · 0 评论 -
c++函数重载
概念在C++程序中,将在同一作用域内,语义、功能相似具有相同函数名字,不同参数列表(参数的个数,顺序和类型不同)的函数。函数重载的实现名字修饰概念因为最终的二进制可执行程序是不允许有同名函数出现的。作为语言实现的编译器必须为每一个被重载的函数生成唯一的内部变量首先了解程序运行经历的几个阶段:预处理、编译、汇编、链接。名字修饰即就是一种在编译过程中,将函数、变量名称重新改编的机制。C语言的名字修饰只是在函数名字前面添加了下划线。比如,对于以下代码,在最后链接时就会出错:C++的名字修饰C+原创 2020-05-16 10:10:10 · 211 阅读 · 0 评论 -
c++静态成员
概念声明为static的类成员称为类的静态成员,用static修饰的成员变量称为静态成员变量,用static修饰的函数称为静态成员函数。特性1)静态成员为所有类对象所共享,不属于某个具体的实例;2)静态成员变量要在类外定义,定义时不加static关键字;3)访问静态成员的方式:类名::静态成员;4)静态成员函数没有隐藏的this指针,不能访问任何非静态成员;5)静态成员和类的普通成员一样,有public、protected、private访问级别,有返回值,可被const修饰。6)静态成员变原创 2020-05-15 16:27:39 · 89 阅读 · 0 评论 -
c++之深浅拷贝
看了别人的博客的理解如图有这样一个类:主函数:运行结果:看看p和p2指向的地址:两者指向同一块地址,那么析构释放内存,就会出错。解决方式:深拷贝再来看看两个指针指向再举一个例子#include<iostream>#include<stdlib.h>using namespace std;class String{public: //构造函数 String(const char* str) :_str(new char[strlen(st转载 2020-05-15 16:00:35 · 109 阅读 · 0 评论 -
c++进阶之多态
多态概念多态的字面意思:一个事物有多种形态。按统实现的角度分类:静态多态、动态的多态静态多态:函数的重载和运算符的重载都属于静态的多态,在程序编译时系统就能决定调用的是哪一个函数,因此静态的多态又称为编译时的多态性。动态的多态:在程序运行过程中才动态的确定操作所针对的对象,因此又称为运行时的多态。动态的多态性是通过虚函数实现的。构成多态的条件1)必须要使用关键字virtual修饰基类的成员函数,指明该函数是虚函数;2)并且在派生类里面要重新实现,才能实现动态的多态重写的条件:1.要形成重写转载 2020-05-15 12:18:49 · 165 阅读 · 0 评论 -
c++进阶之继承
啊转载 2020-05-15 11:41:50 · 127 阅读 · 0 评论 -
c++入门string标准库操作
string对象的定义和初始化代码示例:#include <iostream>#include <string>using namespace std;int main(){ string s1 = "a"; cout << "s1 = " << s1 << endl; //s1 = a string s2(s1); //将 s2 初始化为 s1 的一个副本 cout << "s2 = "原创 2020-05-14 11:31:40 · 100 阅读 · 0 评论 -
c++入门vector标准库操作
使用 vector 之前,必须包含相应的头文件,vector 属于 std 命名域的,因此需要通过命名限定: #include<vector> using std::vector; //using namespace std;vector 对象的定义和初始化vector<int> a;vector<int> b(a);vector<string> a(6,'a');vector<int> a(10);常见操作#inc原创 2020-05-14 10:56:55 · 383 阅读 · 0 评论 -
类和对象1
内容:1 再谈构造函数2 c++11的成员初始化新玩法3 友元4 static成员5 内部类6 再次理解封装一。1.1 构造函数的赋值:创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初值。虽然上述构造函数调用后,对象已经有一个初始值。 但不能将其称为类对象成员的初始化。构造函数体中的语句只能将其称为赋初值,而不能称为初始化。 因为初始化只能初始化一次...原创 2019-06-03 17:20:50 · 151 阅读 · 0 评论