![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 85
L-silence
这个作者很懒,什么都没留下…
展开
-
模板类详解
现在有一个问题,要如何实现一个通用的交换函数呢?之前学过的函数重载虽然说可以实现,但它有几个不好的地方:1.重载的函数仅仅只是类型不同,代码的复用率比较低,只要有新类型出现时,就要增加相应的函数2.代码的可维护性比较低,一个出错可能所以的重载均会出错我们需要用一个通用的模具来实现不同类型的代码,就像生活中浇筑的过程一样,会有一个模具,通过给这个模具中填充不同的材料来获得不同材料的铸件。一.泛型编程即编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。模板分为函数模板和类模板。原创 2021-11-27 19:18:46 · 4706 阅读 · 0 评论 -
C++内存管理
一.C++内存分布要研究C++的内存分布,首先要明白C++的内存是如何分布?1.栈(Stack):又叫堆栈,存储非静态局部变量/函数参数/返回值等等,栈是向下增长的。2.内存映射段:用于装载一个共享的动态内存库,用户可使用系统接口创建共享内存,做进程间通信。3.堆(Heap):用于程序运行时的动态内存分配(如:malloc,realloc,calloc,new等),堆是可以向上增长的。4.静态区(Static):包括数据段和代码段,其中数据段用来存储全局数据和静态数据,代码段用来存储可执行代码,原创 2021-11-13 19:40:41 · 413 阅读 · 0 评论 -
static成员,友元及内部类
一.static成员1.概念:声明为static的类成员成为类的静态成员。用static修饰的成员变量称为静态成员变量,用static修饰的成员函数称为静态成员函数。class Test {public: //Test():m_a(0){} Test():m_b(0){ } //静态函数没有this指针 static void fun() {//静态函数只能调用静态成员,不能调用普通成员 m_a = 0; //show();不能调用 } void show() {//普通函数原创 2021-10-31 21:34:56 · 111 阅读 · 0 评论 -
类的6个默认成员函数及const成员函数
一.类的6个默认函数空类即一个类中无任何成员。空类中并不是什么没有,它会在我们不写的情况下自动生成6个默认函数,如下:1.构造函数(1)概念:构造函数是一个特殊的成员函数,它的名字必须和类名相同,并且无返回值,在创建对象时由编译器自动调用构造函数用来初始化对象class Date {public: void SetDate(int year, int month, int day) { _year = year; _month = month; _day = day; } vo原创 2021-10-25 18:05:06 · 317 阅读 · 0 评论 -
C++类及this指针
一.类的定义C语言中,结构体只能定义变量,但在C++中,结构体内不仅可以定义变量,也可以定义函数,只不过在C++中更喜欢用class来代替C语言中的struct,如下:class Test{ //类体:由成员函数和成员变量组成};其中class为定义类的关键字,Test为类的名字,{}中为类的主体,注意类定义结束时后面的分号类定义的两种方式:1.声明和定义都在类体中需要注意,成员函数如果在类中定义,编译器可能会将其当成内联函数处理。class Person {public:原创 2021-10-22 15:44:31 · 271 阅读 · 0 评论 -
C++基础知识(二)
一.auto关键字1.简介auto作为一个新的类型指示符来指示编译器,auto声明的变量必须由编译器在编译时推导而得。看下面的代码,对auto进一步认识:int TestAuto() { return 10;}int main() { int a = 10; auto b = a; auto c = 'a'; auto d = TestAuto(); cout << typeid(b).name() << endl; cout << type原创 2021-10-05 00:00:40 · 64 阅读 · 0 评论 -
C++基础知识(一)
之前学习的C语言是面向过程,C++则是面向对象(类)的,两者在代码书写上就具有一定的区别。#include <iostream>//输入输出流using namespace std;//命名空间int main(){ int a = 10; cout<<"a ="<<endl; return 0;}这里的cout即输出对象流,相当于C语言中的printf;cin为输入对象流,相当于C语言中的scanf;<<是插入符,又称输出运算符;en原创 2021-10-03 18:05:11 · 202 阅读 · 0 评论