![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
ResttaPersevere
酷爱此行业,特此进行博客来撰写经验,来想着会因此帮助他人,也想不断新磨练自己。
展开
-
const关于公用数据的保护(三)
常对象:可以在定义对象时加关键字const,指定对象为常对象,常对象必须要有初值,如:Time const t1(12,34,46)//定义t1是常对象。这样该对象的t1中的所有数据成员都不能被修改。定义常对象的一般形式为 类名 const 对象名[(实参表)] 也可以把const放在前面: const类名 对象名[(实参表)] 二者等价。在定义常对...原创 2019-04-25 18:51:06 · 181 阅读 · 0 评论 -
const使用(const int *p,int const *p,和int * const p二)
const int *p,int const *p(指向常变量的指针变量,可以指向常变量,还可以指向未被声明为const的变量,但此时只能修改指向地址,不能修改值,可以修改指向的那个变量的值,不能用本身对指针变量地址修改的方式来修改值,如果一个变量已经被声明为常变量,不能用它进行初始化别的变量,而且只能用常变量的指针去指向它,而不能用一般的非const类型指针变量去指向它。) int * c...原创 2019-04-25 12:11:11 · 7073 阅读 · 3 评论 -
常变量和符号常量的区别?常变量和文字常量的区别?
定义符号常量:#define PI 3.1415926 //没有分号定义常变量 :const float PI=3.1415926;符号常量和常变量的区别:常变量:具有变量的特征是存在一个以变量名命名的存储单元,在一般情况下,存储单元中的内容是可以变化的。而对于常变量,在变量的基础上加了一个限定:存储单元中的内容不允许变化,仍然是有存储单元的。符号常量:是使用一...原创 2019-04-25 11:34:39 · 7152 阅读 · 0 评论 -
什么叫做栈区,堆区,全局区,静态区,代码区,常量区,自由存储区?
看了很多内存存储区文档的介绍,比较杂,自己搜集总结一下,要不总是忘,自己总要去搜索,去记。C的内存基本上分为4部分:静态存储区、堆区、栈区以及常量区。他们的功能不同,对他们使用方式也就不同。在C++中内存分成5个区,分别是堆、栈、全局/静态存储区、常量存储区和代码区;内存四区是指:栈区,堆区,全局区,代码区。1:栈区(stack)?栈区:就是那些由编译器在需要的时候分配,在不...原创 2019-04-24 22:18:24 · 5661 阅读 · 2 评论 -
友元的三种访问方式(友元函数(普通成员函数声明为友元函数,友元 成员函数),友元类 )
在一个类中,可以利用关键字friend将其他的函数或类声明为友元,如果友元是一般函数或者类的成员函数,称为友元函数,如果友元是一个类,则成为友元类,友元类的所有成员函数都自动成为友元函数。友元函数:友元函数是在类中用关键字friend修饰的友元函数,友元函数可以是一个普通的函数,也可以是其他类的成员函数。虽然它不是本类的成员函数,但是在它的函数体中可以通过对象名访问类的私有和保护成员。...原创 2019-04-28 20:33:57 · 7677 阅读 · 1 评论 -
析构函数介绍以及注意事项。
析构函数也是一个特殊的成员函数,它的作用刚好和构造函数相反,它的名字是类名的前面加一个"~"符号析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新对象使用。而且作用不仅可以用来释放资源,还可以被用来执行 用户希望在最后一次使用对象之后所执行的任何操作。析构函数不返回任何值,没有函数类型,也没有函数参数。没有函数参数,所以它不能被重载。一个类可...原创 2019-04-23 18:21:46 · 1830 阅读 · 0 评论 -
关于构造函数的介绍(四):使用默认参数的构造函数
有默认参数的构造函数:构造函数中参数的值既可以通过实参传递,也可以指定为某些默认值,即如果用户不指定实参值,编译系统就使形参的值为默认值。一般来说在类中声明构造函数的时候,给那些带有形参的变量直接赋予初值,之后,再在类外进行具体函数体的编写。或者直接在类中进行定义构造函数的的时候,给形参变量指定数值,在类内进行函数体的书写。#include<iostream>using n...原创 2019-04-23 16:59:11 · 8161 阅读 · 0 评论 -
关于构造函数的介绍(三)构造函数的重载
在一个类中可以定义多个构造函数,以便为对象提供不同的初始化的方法,供用户选用,这些构造函数具有相同的名字,而参数的个数或参数的类型不相同,这称为构造函数的重载(函数重载)。#include<iostream>using namespace std;class Box{public: Box(); Box(int h,int w,int len):hei...原创 2019-04-23 15:31:48 · 10244 阅读 · 2 评论 -
关于c++中的静态成员
类的静态数据成员:如果希望各个对象中(同一个类)的数据成员的值是一样的,就可以把它定义为静态数据成员,这样它就可以为各个对象所共有,而不只属于某个对象。所以同时静态数据成员也在内存中只占一份空间,每个对象都可以引用这个静态数据成员前面可知,如果只声明了类而未定义对象,则类的一般数据成员是不占内存空间的。只有在定义对象时候,才为对象的数据成员分配空间。但是静态数据成员不属于某一个对象,在为对象...原创 2019-04-27 22:46:01 · 275 阅读 · 0 评论 -
对前面我的博客关于构造函数的补充以及对象的赋值与复制和对自己学习的总结与思考
前面是对于构造函数的重新复习,自己找到了自己以前所写的笔记,又重新回顾了很多内容,今天就对之前博客关于构造函数的内容进行一些补充和深入,以及对于后续复制构造函数以及对象赋值的概念做一些了解,还有后续关于深复制和浅复制的问题探讨,我自己所学的所有c++知识,相关理论,都是自己看书,自己敲代码,自己去想,去验证,自己实践出来的,很希望大佬们来进行各种批阅和改正,这样大家都可以互相提高,关于我的代码笔记...原创 2019-04-27 16:56:22 · 162 阅读 · 0 评论 -
对象的动态建立与释放
在前面介绍的方法定义的对象都是静态的,在程序运行过程中,对象所占的空间是不能随时释放的。在c++中动态内存分配技术可以保证程序在运行过程中按照实际需要申请适量的内存,使用结束后还可以释放,这种在程序运行过程中申请和释放的存储单元也成为堆对象,申请和释放过程一般称为建立和删除。在c++程序中建立和删除堆对象使用两个运算符:new和delete。new:要了解为哪种数据类型分配内存,new将...原创 2019-04-27 14:02:55 · 798 阅读 · 0 评论 -
变量的引用,对象的常引用,以及对const型数据的总结(二)
对象的引用和变量的引用很类似,也可以把引用声明为const,为常引用。定义一个外部函数,通过类中的公有函数对数据进行操作的时候,如果不希望,在外部函数中修改对象的值,可以把外部函数的形参t声明为const(常引用),函数原型为:void fun(const Time &t)。在c++面向对象程序设计中,经常用常指针和常引用做函数参数,这样既能保证数据安全,使数据不能被随意修改,在调用...原创 2019-04-26 15:37:10 · 169 阅读 · 0 评论 -
变量的引用,对象的常引用,以及对const型数据的总结(一)
在说引用之前,我们现在先复习学习一下,关于变量的常引用。在c++中,变量的引用就是给变量起别名,因此引用又称为别名,建立“引用”就是为一个变量再起另一个名字,以便在需要的时候可以方便,间接地引用该变量,这就是引用名称的由来。如下:int a;int &b = a;这就声明了b是a的引用,即是a的别名,&是引用声明符,此时它并不代表地址,对变量声明一个引用,并不另外开辟内存单元...原创 2019-04-26 15:16:49 · 549 阅读 · 0 评论 -
const关于指向常对象的指针(四)
介绍指向常对象的指针,可以参考我写的博文,const使用(const int *p,int const *p,和int * const p二)。 如果一个对象被声明为常对象,只能用指向常对象的指针变量去指向它,而不能用一般的(指向非const型对象的)指针变量去指向它。 如果定义了一个指向常对象的指针变量,并使它指向一个非const的对象,则其指向的对象是不能通过该指针变量来改变的。 如一下...原创 2019-04-26 14:26:11 · 386 阅读 · 0 评论 -
关于构造函数的介绍(一)
以前在我们进行定义一个变量的时候,会手动进行输出初始化。在基于对象的程序中,定义一个对象时候,需要做初始化的工作,也就是对数据成员赋初值,那么该如何做呢?class Time{public: hour = 0; minute = 0; second =0 ;} 我们通常会这样想,但这是一种错误的写法,因为这定义的是一个类,并不是一个...原创 2019-04-22 13:17:32 · 626 阅读 · 0 评论 -
如何编译安装ffmpeg?(linux,ubuntu16以及18.04)
ffmpeg安装我总结为三种方式(静态编译设置环境变量,命令安装,手动编译)。1:官网下载静态编译好的包:(官网已经为我们编译好了很全面的ffmpeg工具包,我们直接下载下来,然后自己手动去配置环境变量,就可以使用了。)下载地址:https://ffmpeg.zeranoe.com/builds/1.下载linux下的工具包(Linux Static Builds),linux下的静态...原创 2019-07-08 21:44:03 · 556 阅读 · 2 评论