坚持c++,真正掌握c++(4)

时间:2023-03-10 03:42:29
坚持c++,真正掌握c++(4)

这几天复习了c++primer的第12章类的解说,尽管之前这一章也看了几遍。可是我终究认为书读百遍其义自现,如今我给出一些我学习的心得,欢迎大家一起探讨。

首先,类能够说是c++的灵魂,正由于c++中有类的出现,提高了代码的复用率,实现了真正的面向对象的编程,我们能够使用别人编写设计的类,仅仅要我们知道这个类的成员函数和成员数据,我们就能够使用这个类而不必去考虑这个类的实现方式。c++中就存在着非常多这种类,最经典的莫过于微软自己开发的windows界面库MFC了,这个类封装了windows API函数,我们在设计windows桌面应用程序时。仅仅需要调用对应的函数就能够设计出非常美丽的桌面应用程序,这是非常方便的。说到类,首先要讲到的是。类是怎么声明和定义的,类的定义和声明能够使用两个keyword实现,各自是class和struct,他们没什么太大的差别,最基本的差别是class中默认的訪问权限是私有的。而struct默认的訪问权限是公有的。类其中包括着一个隐含的成员是this指针,this指针指向自己,我们能够通过this->...来调用成员。可是一般不用这样做,可是也有必需要使用this指针的地方,比方我们成员函数返回的类型为类类型的引用,那么我们必需要使用this指针作为返回。类定义中首先出现的函数是类构造函数。即使用户未定义构造函数,编译器也会自己提供一个默认的构造函数,可是仅仅要用户自定义了类的构造函数。那么编译器就不会提供默认构造函数。

用户能够重载构造函数,当然自己也能够定义默认构造函数(没有形參的构造函数)。

关于类的訪问权限的问题。訪问权限分为公有和私有(后面还会介绍保护),类的使用者仅仅能訪问类的公有成员。私有成员函数和成员变量仅仅能在类的作用域中进行訪问,假设别的函数或者类想訪问类的私有成员,那么我们能够通过设定该函数或者类为此类的友元,这样就能訪问类的私有成员函数和变量了。

类其中也存在着static静态成员,而静态成员不同于其它的成员,由于静态成员不属于类的对象,而独属于这个类,我们不能在类中声明类本身类型的变量,可是我们能够将这种变量声明为静态变量。也能够声明为这种变量的指针或者引用。

随机推荐

  1. iOS 和Android客户端测试区别整理ing

    区别很多,慢慢发现整理,注重细节,避免遗漏 消息推送区别: 1.推送渠道: 1.1 iOS走iOS自带的渠道进行系统内推送,应用内和应用外推送无明显差别,均可以收到push信息. 1.2 安卓由于谷歌 ...

  2. Codeforces Round #424

    基本全是水题 第一题水,不过有hack点,先增后不变再减 #include<map> #include<set> #include<cmath> #include& ...

  3. 修改tomcat默认端口号8080

    1.背景 在默认情况下,tomcat的端口是8080,使用了两个tomcat,那么就需要修改其中的一个的端口号才能使得两个同时工作. 2.方法 2.1改动一 那么,如何修改tomcat的端口号呢?首先 ...

  4. UVALive-3713 Astronauts (2-SAT)

    题目大意:有三个任务A.B.C,n个已知年龄的人.A任务只能被年龄不小于平均年龄的人做,B任务只能被平均年龄以下的人做,C任务不限,相互讨厌的两个人不能做同一件任务,现在已知厌恶关系,求一种任务分配方 ...

  5. [nodejs]npm国内npm安装nodejs modules终极解决方案

    此方案用于设置代理和修改镜像地址都不能解决问题使用 1.npm root 确认node模块的根文件夹,全局要加-g. osx同样是此命令,先清除缓存. npm cache clean C:\Users ...

  6. How to create Oracle ASM devices using device-mapper multipath devices in Red Hat Enterprise Linux 6

    How to create Oracle ASM devices using device-mapper multipath devices in Red Hat Enterprise Linux 6 ...

  7. 【小米oj】找出单独的数字

    题目链接:https://code.mi.com/problem/list/view?id=2&cid=0&sid=26251#codearea 描述 给出N个数字.其中仅有一个数字出 ...

  8. 二十三、DBMS_METADATA(提供提取数据库对象的完整定义的接口)

    1.概述 作用:提供提取数据库对象的完整定义的接口.这些定义可以用XML或SQL DDL格式描述.提供两种类型接口:可编程控制的接口:用于Ad Hoc查询的简单接口. 2.包的组成 dbms_meta ...

  9. 高射炮打蚊子丨用Visual Studio 2017写最初级的C语言程序

    众所周知,Visual Studio号称全宇宙最强的IDE(集成开发环境),简直可以“秒天秒地秒空气”.我们看着各种技术大会上,大神们在台上用VS演示Demo溜得飞起,然而对于一些非技术专业同学或者是 ...

  10. bzoj2700

    题解: dp dp[i][j]表示i个红,j个绿的最小代价 然后再加上两位k,l,表示k个红连,l个绿连 然后转移 代码: #include<bits/stdc++.h> using na ...