
c++
文章平均质量分 60
有梦想的-蜗牛
越努力,越幸运
展开
-
析构函数&&构造函数 以及 拷贝构造&&赋值运算符的重载
析构函数&&构造函数:1.析构函数:当一个生命周期结束时,C++系统会默认调用的一个成员函数。 ——将对象定义在其中,保证在结束时对象被清理。2.构造函数:在创建变量时,C++系统默认调用的一个成员函数。 ——保证对象一定被初始化*※既然系统会默认调用构造函数,那么为什么还要自己写呢?——拷贝时,如果是简单的拷贝值,即浅拷贝时,可以不写。但如果是深度...原创 2018-04-01 16:35:10 · 263 阅读 · 0 评论 -
内存管理面试题
面试题一:设置一个不能被继承的类思路:子类继承父类的时候,子类的构造函数会自动调用父类的构造函数;子类的析构函数会自动调用父类的析构函数。所以只要将父类的构造函数和析构函数设置成私有的即可。(一旦设置成私有的,子类继承父类时,就会去调用父类函数和析构函数,从而导致编译器就会报错)上述方法也存在一定的问题,将父类的构造函数和系统函数设置成私有的,如何实例化对象呢,又如何对不用的对象进行释放...原创 2018-11-21 21:25:03 · 1295 阅读 · 1 评论 -
类和对象
一、类与对象的初步认知1. 什么是类?类是一个抽象的概念,是一个自定义的数据类型。2. 类和对象的区别?对象:1. 是一个类的一个实例,是真实的个体。2. 是...原创 2018-11-18 18:07:37 · 319 阅读 · 0 评论 -
不能被声明为虚函数的几个函数以及为何析构函数最好被声明为虚函数
总的来说,不能被定义为虚函数的函数有五种:构造函数、普通函数、友元函数、内联函数、静态函数1.构造函数什么是构造函数? 在C++编译阶段,系统自动调用的一个进行初始化的函数。为什么构造函数不能定义为虚函数? 答:构造函数是先创建对于一个构造函数,还没有构造成功,没有虚函数表,自然也就无法实现对它的调用...原创 2018-07-30 09:01:11 · 362 阅读 · 0 评论 -
C++知识点总结目录
01. C++智能指针02. 虚函数&&虚表03. new / delete原创 2018-05-22 18:32:20 · 276 阅读 · 0 评论 -
new / delete,new[ ] / delete[ ],operator new /operator delete,malloc / free 之间的区别和联系
1. C语言和C++中动态内存分配的区别 区别 C语言 C++ 申请内存 malloc new 和new[] 释放空间 free delete 和delete[] 作用域 内置类型 所有类型new / delete 是两个操作符,malloc / free是两个系统函数2. new / delete 是...原创 2018-04-29 22:05:05 · 387 阅读 · 0 评论 -
C++智能指针——探究六个常见的智能指针的使用及原理
一、智能指针1.什么是智能指针?——是一个类,用来存储指针(指向动态分配对象的指针)。2.智能指针满足的条件:1.具有RAII思想2.能够像指针一样(运算符重载,解引用,指向对象成员)3.对资源进行封装和管理RAII思想(资源分配及初始化)1.定义一个类来封装资源的分配与释放,2.构造函数中完成资源的分配及初始化;3.析构函数中完成资源的清理,可以保证资源的正确...原创 2018-05-20 17:21:18 · 19839 阅读 · 5 评论 -
虚函数&&虚表以及虚表在几种继承间的情况
一、虚函数(1)定义虚函数:类的成员函数前加virtual——这个成员函数称为虚函数。(2)虚函数的重写1)当在子类中定义了一个与父类-完全相同的(函数名,参数,返回值都相同)虚函数时, 则称子类的这个函数重写(也称覆盖了)父类的这个虚函数。 2)-协变除外(协变函数的返回值可以不同,依然构成了重写)(协变:子类函数的返回值是子类指针,父类函数的返回值是父类指针)...原创 2018-05-05 01:42:15 · 795 阅读 · 0 评论 -
如何 用C语言模拟实现c++的继承和多态??
模拟实现继承:首先,得知道什么是继承? ——继承就是:子类可以调用父类的成员变量和成员函数。那么如何用C语言模拟实现呢?c语言没有类,只有结构体,结构体中只有成员变量,所以在结构体中定义成员变量,在结构体外定义函数。用两个结构体实现,结构体A 相当于 父类,结构体 B相当于 子类。——在B中定义一个A的结构体变量。(即可通过这个结构体变量访问结构体的成员变量)——以此来实现对变量...原创 2018-04-25 17:47:14 · 331 阅读 · 0 评论 -
类对象存储模型——类的内存对齐&&空类的大小(面试题)
类实例化对象类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际空间来存储它。一个类可以实例化出多个对象,实例化出的对象有实际的物理空间。做个比方:类实例化出对象,好比拿着设计图来设计房子。类就是设计图,并没有实体建筑,而对象才是设计出来的成品,占用物理空间。类对象存储模型一个类可以实例化多个对象每个对象的大小为类中所有成员变量大小之和。(成员函...原创 2018-04-23 01:37:11 · 480 阅读 · 0 评论 -
类和对象_Date(日期类)
date.h#pragma once#include<assert.h>#include<iostream>using namespace std;class Date{ public: Date(int year= 1900, int month=1, int day=1) //构造函数的初始化,可以调用私有变量 { ...原创 2018-04-12 00:55:15 · 1076 阅读 · 0 评论 -
实现两种方式的引用计数写时拷贝。——新创建引用计数 和 引用计数在头上
#define _CRT_SECURE_NO_WARNINGS -1//调用sacnf和strcpy会出现报错include<iostream>#include<stdlib.h>using namespace std;新创建引用计数 代码实现:class String{public: String(char* str = ...原创 2018-04-12 00:48:37 · 342 阅读 · 1 评论 -
引用
引用 :引用的概念及用法: 引用不是定义一个新的变量,而是给一个已经定义的变量重新起一个别名。定义的格式:类型&引用变量名引用的特点:1.一个变量可以取多个别名2.引用必须初始化3.引用只能在初始化的时候引用一次,不能改变为再引用其他的变量。代码分析:void Test1(){int a = 1; int& b = a;a = 2;b ...原创 2018-04-15 18:55:10 · 189 阅读 · 0 评论 -
C++——继承(单继承、多继承、菱形继承)&&虚继承&&虚基类
首先,我们得知道,面向对象的三大语言:封装 继承 多态今天我们主要谈谈继承1.什么是继承——子类(派生类)可以访问和使用父类(基类)的成员比如:有两个类,A和B,我们在定义时,使得B 可以访问 A 的成员,我们叫做 B继承了A。 B为子类,(派生类);A为父类(基类)2.为什么要用继承呢 ?代码分析:#include<iostream>u...原创 2018-04-15 16:27:24 · 380 阅读 · 0 评论 -
为什么C语言不支持重载,C++支持重载???
首先,我们得知道,什么是函数的重载?函数的重载: 在同一个作用域类,一组函数的函数名相同,参数列表不同(个数不同/类型不同),返回值可同可不同。那么问题来了,为什么C语言不支持重载,C++支持重载呢? 我们先来看看,编译的整个过程: 实例分析: 比如一个函数声明如下:void function(float x,float y);在C语言中,编译器进行编译之后,在库...原创 2018-04-15 10:15:21 · 2457 阅读 · 2 评论