类的成员函数

类与封装

南楼画角 提交于 2020-02-26 15:49:25
前面我们讲过类之间是存在关系的,类将它复杂零碎的东西全部封装在自己的内部,对它的内部状态我们的调用者一无所知,它表示给用户的是一些简单的使用方式,从这个角度类可以分为2个部分,一个是类的实现细节,一个是类的使用方式,对于调用者而言,类的内部细节我们往往可以忽略它,我们只需要知道怎样用就行了,比如对于用户(调用者)看电视你只需要会换台就行,不用管电视内部是怎么工作的,电视内部工作的实现是工程师需要考虑的(封装),对于用户会用即可 封装的基本概念 : -并不是类的每个属性都是对外公开的 比如女孩子的体重和年龄 -而一些类的属性是对外公开 比如人的姓名和性别 -必须在类的表示中定义属性和行为的公开级别 比如文件系统的权限 C++中类的封装 -成员变量: C++中用于表示类属性的变量 -成员函数: C++中用于表示类行为的函数 -C++中可以给成员变量和成员函数定义访问级别, 成员函数是可以访问成员变量的 public 成员变量和成员函数可以 在类的内部和外界访问和调用 private 成员变量和成员函数只能在 类的内部被访问和调用 在一篇文章的基础上添加两个类,一个是女生类,它肯定继承于人类,我们上面打过比方,女生的体重年龄不希望被别人知道,所以它就是private类型的,这样的语法是C++新引入的访问级别的定义,也就是我们所说的封装的体现,prviate这个关键字就来定义访问级别为私有

C++细节注意点

痴心易碎 提交于 2020-02-25 15:44:44
文章目录 实现和声明的分离 不使用 using namespace std; C++对C语言的增强 重点1 引用 引用的注意事项 引用的本质 指针引用 常量型引用 成员函数调用const修饰对象实例 构造和析构函数实例 拷贝构造函数 拷贝构造函数的调用时机 深拷贝浅拷贝 深拷贝 初始化列表 类对象作为类成员的案例 explicit 关键字 new动态对象创建 完美代替malloc 静态成员变量 静态成员函数 单例模式 成员变量和成员属性分开处理 this指针 this指针的使用 空指针访问成员的函数 常函数和常对象 全局函数做友元函数 整个类做友元类 让成员函数做友元函数 自定义数组实例 运算符重载 二元重载 左移右移的重载的注意点 属性私有后 要使用友元来进行重载 前置后置递增运算符 指针运算符重载(自定义一个智能指针) 赋值运算符重载 [] 运算符的重载 关系运算符重载 函数调用运算符重载 不要重载||和&& 自定义string类 继承 继承方式 继承中的对象模型 继承中的构造和析构顺序 继承中同名成员的处理 继承中静态成员的处理 多继承 菱形继承 解决二义性的方法 虚继承工作原理 多态 静态编联和动态编联 多态原理解析 多态案例1 计算器 抽象类和纯虚基类 虚析构和纯虚析构函数 向上类型转换向下类型转换 游戏多态实例 模板 排序实例 普通函数和函数模板的区别 模板机制内部原理

C++类的六个特殊成员函数

有些话、适合烂在心里 提交于 2020-02-24 21:07:36
1.设置六个函数的参数,先让函数运行起来 // // Created by liuhao on 20-1-1. // //================================================================================= #include <iostream> //using namespace std; class Stu { private: std::string name = "无名氏 "; int age = 0; int *d = nullptr; public: Stu() { std::cout << name << age << " 执行了无参构造函数!" << std::endl; }; Stu(int a) { std::cout << name << age << " 执行了有参构造函数!" << std::endl; }; Stu(const Stu &s) { std::cout << name << age << " 执行了拷贝构造函数!" << std::endl; }; Stu &operator=(const Stu &s) { std::cout << name << age << " 执行了拷贝赋值运算符函数!" << std::endl; }; Stu(Stu &&s) {

C++ 类的静态成员(static)

会有一股神秘感。 提交于 2020-02-22 18:30:15
静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。 静态数据成员 在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。 使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对 象都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。    静态数据成员的使用方法和注意事项如下:   1、静态数据成员在定义或说明时前面加关键字static。   2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:     <数据类型><类名>::<静态数据成员名>=<值>   这表明: (1) 初始化在类体外进行 ,而前面不加static,以免与一般静态变量或对象相混淆。   (2) 初始化时不加该成员的访问权限控制符private,public等。   (3) 初始化时使用作用域运算符来标明它所属类,因此, 静态数 据成员是类的成员,而不是对象的成员。   3

java内部类以及异常处理

烂漫一生 提交于 2020-02-17 03:44:32
框架图 内部类 将一个类定义在另一个类的里面,里面那个类就称为内部类(也叫内置类或嵌套类)。 内部类的访问规则: 1。内部类可以直接访问外部类中的成员,包括私有成员。 之所以可以直接访问外部类中的成员,是因为内部类中持有了一个外部类的引用,格式 外部类名.this 2。外部类要访问内部类,必须建立内部类对象。 1 class InnerClassDemo 2 { 3 public static void main(String[] args) 4 { 5 //外部其他类直接访问内部类中的成员。格式写法 6 Outer.Inner in = new Outer().new Inner(); 7 in.function(); 8 } 9 } 10 11 12 class Outer 13 { 14 private int x = 3; 15 16 class Inner//内部类定义在成员位置上 17 { 18 19 void function() 20 { 21 System.out.println("innner :"+x);//内部类可以直接访问外部类,相当于省略了Outer.this句柄。 22 } 23 } 24 25 void method() 26 { 27 Inner in = new Inner();//外部类想访问内部类要先建立内部类对象。 28 in

【笔记】模板类成员函数指针的使用

放肆的年华 提交于 2020-02-17 02:16:29
# include <stdio.h> # include <stdlib.h> # include <map> # define TRUE 1 # define FALSE 0 /// 单向链表队列模板类 template < typename T > class TMyQueue { public : TMyQueue ( ) { head_ = NULL ; tail_ = NULL ; max_size_ = 10 ; size_ = 0 ; } TMyQueue ( int max_size ) { head_ = NULL ; tail_ = NULL ; max_size_ = max_size ; size_ = 0 ; } ~ TMyQueue ( ) { while ( head_ != NULL ) { Node * tmp = head_ ; head_ = head_ - > next ; free ( tmp ) ; } tail_ = NULL ; printf ( "[~TMyQueue]head_ = %p, tail_ = %p\n" , head_ , tail_ ) ; } bool IsFull ( ) { return ( size_ == max_size_ ) ; } bool IsEmpty ( ) { return ( size_

C++第四章类与对象4.2类和对象

风格不统一 提交于 2020-02-15 15:18:42
面向对象编程问题中,程序模块是由类构成的,类是对逻辑上相关的函数与数据的封装,他是对问题的抽象描述 4.2.1类的定义 class 类名称{ public: 外部接口 protected: 保护型成员 private: 私有成员 }; 4.2.2类成员的访问控制 public、protected、private public: 定义了类的外部接口,使得类内部的函数或数据能够和类外部的世界建立联系,使得外部能够调用和操作。 private: 私有成员只能被本类的成员函数访问,来自类外部的任何访问都是非法的,这样就保证了类内数据成员的安全,增加隐蔽性。 proctected: 保护类型成员的性质和私有成员的性质相似,其差别在于继承过程中对产生的新类影响不同。 4.2.3对象 声明一个对象和声明一个一般变量相同,采用以下方式: 类名 对象名; 调用数据/函数成员的形式: 对象名.数据成员名/函数成员名(参数列表) 4.2.4类的成员函数 1.成员函数的实现: 返回值类型 类名::函数成员名(参数列表){ 函数体 } 2.带默认形参值的成员函数: 如果调用该函数时没有给出实参,那么函数的参数值将会按照默认形参值来执行。 默认的形参值写在类的定义中,不能写在类外 3.内联成员函数 内联函数的声明: 1.隐式声明2.显式声明 区别在于关键字inline的区别

Computer.h [友元] C++ 类

左心房为你撑大大i 提交于 2020-02-11 06:39:39
#pragma once #include #include <stdlib.h> #include using namespace std; //#include “ComputerService.h”//使用类的成员函数作为友元函数,必须包含其头文件 class Computer { public: string getcpu() { return cpu; } private: string cpu = “i5”; void friend upgrade(Computer* computer);//全局函数作为友元函数 //friend void ComputerService::upgrade1(Computer* computer);//类的成员函数作为友元函数 friend class ComputerService;//友元类 }; 来源: CSDN 作者: qq_44699909 链接: https://blog.csdn.net/qq_44699909/article/details/104219677

C++类和对象

落花浮王杯 提交于 2020-02-10 19:29:01
---恢复内容开始--- 一: C++类的定义和对象的创建   与结构体一样,类只是一种复杂数据类型的声明,不占用内存空间。而对象是类这种数据类型的一个变量,或者说是通过类这种数据类型创建出来的一份实实在在的数据,所以占用内存空间。    类的定义 1 class Student{ 2 public: 3 //成员变量 4 char *name; 5 int age; 6 float score; 7 8 //成员函数 9 void say(){ 10 cout<<name<<"的年龄是"<<age<<",成绩是"<<score<<endl; 11 } 12 };    class 是 C++ 中新增的关键字,专门用来定义类。    Student 是类的名称;类名的首字母一般大写,以和其他的标识符区分开。    { } 内部是类所包含的成员变量和成员函数,它们统称为类的成员(Member);由 { } 包围起来的部分有时也称为类体,和函数体的概念类似。    public 也是 C++ 的新增关键字,它只能用在类的定义中,表示类的成员变量或成员函数具有“公开”的访问权限。 注意在类定义的最后有一个分号 ; ,它是类定义的一部分,表示类定义结束了,不能省略。   整体上讲,上面的代码创建了一个 Student 类,它包含了 3 个成员变量和 1 个成员函数。    类只是一个模板

C++ 类和对象

一曲冷凌霜 提交于 2020-02-09 13:07:25
类和对象 OOP第二课 1 类的构成 1.1 从结构到类 1.2 类的构成 2 成员函数的声明 2.1 普通成员函数形式 2.2 将成员函数以内联函数的形式进行说明 3 对象的定义和使用 3.1 对象的定义 3.2 对象中成员的访问 3.3 类成员的访问属性 3.4 类中成员的访问方式 3.5 对象赋值语句 3.6 类的作用域 类(class)是面向对象程序设计的最基本的概念,是C++最强有力的特征,是进行封装和数据隐藏的工具,它将一个数据结构与一个操作集紧密地结合起来。类对象是类的实例,用类对象模拟现实世界中的事物比用数据对象更确切。 1. 类的构成 1.1 从结构到类 结构是C的一种自定义的数据类型,它把相关联的数据元素组成一个单独的统一体。 例2.1有关日期结构的例子 #include <iostream.h> struct Date { int year; int month; int day; }; int main() { Date date1; date1.year=2003; date1.month=8; date1.day=25; cout<<date1.year<<"."<<date1.month<<"." <<date1.day<<endl; return 0; } ⭐class与struct的比较 类是C++对C中结构的扩展。