
C++
软硬兼施的程序员
这个作者很懒,什么都没留下…
展开
-
C++之赋值运算符的重载
在一个类中,除去之前所说的默认构造函数,默认拷贝构造函数和默认析构函数外,还有一个系统给定的,默认赋值运算符重载,他是根据值传递的方式进行拷贝。这样也会引起深浅拷贝的问题,可以通过重载赋值运算符的方式,解决深浅拷贝的问题。 具体代码如下: class A { public: int* a; A(int a) { this->a = new int(a); } ~A() { if (a != NULL) { delete a; a = NULL; } } voi原创 2021-08-07 11:21:41 · 259 阅读 · 0 评论 -
C++之运算符重载
运算符重载也是C++的一个强大特性之一,通过运算符重载,能实现很多功能,具体如下。 运算符重载,就是将原先不能进行对应操作的对象通过重载,重载有两种形式,成员函数重载和全局函数重载,具体的语法和区别一起来看看吧。 一、加号运算符的重载 加号无法完成两个对象的相加,通过运算符重载,就能实现这种操作。 class Person { public: int a; int b; Person(int a, int b) { this->a = a; this->b = b; } P原创 2021-08-07 10:38:27 · 195 阅读 · 0 评论 -
C++之友元
友元作为C++独有的属性,有哪些作用呢,一块来瞅瞅吧。 友元,运算符是friend,顾名思义,就是朋友的意思,朋友自然权力大一点,所以就能访问私有及保护的成员。 根据类型不同,友元可以分为: 1.友元全局函数; 2.友元类; 3.友元成员函数。 具体代码如下: class GoodFriend2; class Person { public: friend void visit(); friend class GoodFriend; string Liviroom; Person(); priva原创 2021-08-05 18:52:21 · 169 阅读 · 0 评论 -
C++之const修饰成员函数
const同样可以修饰成员函数,让我们来康康有什么特性吧。 一、const修饰成员函数 1.成员函数后加const称这个函数为常函数; 2.常函数不可以修改成员变量; 3.成员变量前加mutable后,即可在常函数中修改。 举例如下: class Person { public: int age; mutable string name; Person(int age, string name) { this->age = age; this->name = name; }原创 2021-07-31 23:51:28 · 4976 阅读 · 0 评论 -
C++之this指针
this指针,是对象调用成员函数时,系统自动创建的,指向调用对象自身的指针。许多oop语言都有this指针。 this指针有如下用途: 1.当形参和成员变量重名时,可以用this来区分,极大提高了代码的重用性。 2.在类的非静态成员函数中,可以返回对象本身,即return*this。 代码如下: class Person { public: int age; Person(int age) { this->age = age; } Person& func() { age原创 2021-07-31 22:05:25 · 134 阅读 · 0 评论 -
C++之静态成员对象及静态成员函数
static是静态变量的关键字,当他用来修饰成员对象及成员函数时,又会发生哪些变化呢?一起来康康吧。 一、静态成员变量。 一旦某个成员变量前加上static关键字,就会变为静态成员变量。有如下特性: 1.所有对象共享同一份数据。 2.在编译阶段分配内存。 3.类内声明,类外初始化。 如下代码: class Person { public: static int m_Age; }; int Person::m_Age = 100; //类内声明,类外初始化(初始化时要使用域操作符以表示是哪一个域的) v原创 2021-07-31 01:15:08 · 535 阅读 · 2 评论 -
C++之类对象作为成员变量
C++允许一个类的对象作为另一个类的成员变量,但是这时其构造函数与析构函数是怎样调用的呢。 不妨写一段代码来考究一下。 class A { public: A() { cout << "A的构造函数的调用" << endl; } ~A() { cout << "A的析构函数的调用" << endl; } }; class B { public: A a; B() { cout << "B的构造函数的调用" <&原创 2021-07-31 00:32:56 · 2288 阅读 · 0 评论 -
C++之构造函数初始化列表
C++的构造函数除了能通过上一期的方法写,还可以采用初始化列表的方式进行初始化。 语法为:构造函数:属性1(值1),属性2(值2)…{} 采用这种方法能清晰的看出究竟如何进行的赋值,今后建议采用这种方式编写构造函数 如下例: class Person { public: string m_Name; int m_Age; Person(int age, string name) :m_Age(age), m_Name(name) { cout << "构造函数的调用" <&原创 2021-07-30 21:54:44 · 148 阅读 · 0 评论 -
C++之构造函数和析构函数
构造函数和析构函数,是C++每个类都会拥有的函数,具体作用有什么呢,一起来康康吧。 一、概念及其使用: 1.构造函数:是创建对象时,程序自动调用的,用来初始化对象的函数,其格式为: 类名 (参数列表){}。当类中没有构造函数时,程序会自动添加默认构造函数。 1)没有返回值,也不写void; 2)函数名称与类名形同; 3)构造函数可以有参数,因此可以发生重载; 4)在创建对象时,程序会自动调用且只调用一次。 2.析构函数:当销毁对象时,程序自动调用的,执行清理工作的函数。格式为: ~类名(){};当类中没有析原创 2021-07-30 01:39:25 · 816 阅读 · 0 评论 -
C++之函数重载
函数重载也是C++提供的强大特性之一。 函数重载,是指函数名可以相同的函数,极大德提高了代码的复用性。 函数重载需满足以下几个条件: 1.在同一作用域下; 2.函数名称相同; 3.函数的形参列表不同(参数的个数,参数的数据类型) ...原创 2021-07-29 22:38:20 · 174 阅读 · 0 评论 -
C++之函数的默认参数
C++提供了在定义函数时,给函数默认参数的功能。 例如: int func(int a, int b = 10) { return a + b; } int main() { int a = 10; cout << func(a) << endl; cout << func(a, 100) << endl; } func函数有两个参数,第二个参数默认值为10,即当调用func时,当我给出了一个参数,例如,func(a)时,默认b的值为10,所以返回原创 2021-07-29 19:30:11 · 347 阅读 · 0 评论 -
C++之引用的概念及使用方法
引用是C++新提出的概念之一,极大的方便了我们对变量进行操作。 一、引用的概念 在通常的参考书上,引用的概念为:给对象起一个别名,确实可以通过这样的方法来理解他。 例如: int a = 10; int &b = a; 此时b就是a的一个引用或者称为别名,改变b的值也会改变a的值。 b=20; cout<<"b="<<b<<endl; cout<<"a="<<a<<endl; 发现输出均为20,换句话说,对引用的操作也会对变原创 2021-07-29 01:36:09 · 737 阅读 · 0 评论 -
C++之new的使用
new,是C++提供的用于动态申请存储空间的运算符。 一、new的使用。 new+数据类型(初值),返回值为申请空间的对应数据类型的地址。 1.使用new申请一个对象 int *p = new int(10);//申请了一个初值为10的整型数据 2.使用new申请数组 int *arr = new int[10];//申请了能存放10个整型数据元素的数组,其首地址为arr 二、delete运算符的使用。 new运算符通常搭配delete元素安抚来使用,new用来动态申请存储空间,delete用于释放ne原创 2021-07-29 00:31:40 · 31175 阅读 · 0 评论 -
C++异常处理
面向对象的语言又一大特点就是异常处理,他可以让我们很方便的实现对于程序可能出现的错误进行处理。 异常处理包括: 1.throw表达式,异常检测部分使用throw表达式来表示遇到了无法处理的问题。即throw引发了异常。 2.try语句块,异常处理部分使用try语句块来处理异常,包含一个或多个catch子句。 3.异常类,用于在throw和catch之间传递信息。可以自己写,也可以使用封装在标准异常库中的对象。 给出一个除法的例子,大家细细品味是如何处理异常的。 #include<iostream>原创 2021-07-28 00:16:58 · 98 阅读 · 0 评论 -
C++之迭代器
迭代器又称光标,说白了就是一种遍历容器对象的接口。使用迭代器可以访问某个元素,也能从一个元素移动到另一个元素。 能熟练地使用迭代器是C语言学习者向C++学习者的转变标志。C++重点就是面向对象,即要尽可能的创造一种所有对象都能使用的方法,迭代器就是这样。具体的好处还请以后慢慢理解。 1.每种元素都有begin和end成员。 2.begin负责返回第一个元素,end负责返回最后一个元素的下一个位置(有点类似顺序队列的front和rear,学过数据结构肯定就能一下子理解为什么是最后一个元素的下一个位置,ps:没原创 2021-07-27 23:57:31 · 258 阅读 · 0 评论 -
C++之const用法
const 这个运算符本身的意思很简单,作用就是使变量不可改变。 可是在读别人写的const时,就会令许多人感到头大。 其实并没有多难,要点就是const先对右边进行限定。 例如: int i=0; int *const p1=&i; const int *p2=&i; 首先看第一个const,他的右边为p这个指针,所以他的含义就是指针本身不可被修改。 对于第二个const来说,他的右边为*p2,即对p2进行解引用后,*p2就是i,所以这个含义是i不可被修改。 ...原创 2021-07-27 23:26:24 · 161 阅读 · 0 评论