C++ 类 & 对象 技术教程文章

C++四种强制类型转换

四种强制类型转换:static_cast const_cast dynamic_cast reinterpret_cast1、static_cast编译器隐式执行的任何类型转换都可以由static_cast显示完成。①用于类层次结构中基类和子类之间指针或引用的转换。 进行上行转换(把子类的指针或引用转换成基类表示)是安全的; 进行下行转换(把基类指针或引用转换成子类表示)时,由于没有动态类型检查,所以是不安全的。 ②用于基本数据类型之间的转换,如把int转换成char,把...

C++ Primer Plus学习笔记之String类【图】

原文:http://blog.csdn.net/cstopcoder/article/details/20476961

c++友元函数和友元类【代码】

#include <iostream> usingnamespace std; class Point { public: Point(double xx, double yy) { x=xx; y=yy; } friend double Distance(Point &a, Point &b); private: double x, y; }; double Distance(Point &a, Point &b) { double dx = a.x - b.x; double dy = a.y - b.y; return sqrt(dx*dx+dy*dy); } void main(){Point p1(1,2),p2(2,3);double d=Distance(p1,p2);cout<<d<<endl;}http://www.cnblogs...

C++类内存分布【代码】【图】

来源:https://www.cnblogs.com/jerry19880126/p/3616999.html书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。工欲善其事,必先利其器,我们先用好Visual Studio工具,像下面这样一步一步来: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 repor...

C++学习 --- 类和对象之继承【代码】【图】

六、继承1、继承的基本语法菜鸟写法:#include <iostream> #include <string> usingnamespace std; //普通实现页面? //Java页面class Java { public:void header() {cout << "首页、公开课、登陆、注册...(公共头部)" << endl;}void footer() {cout << "帮助中心、交流合作、站内地图...(公共底部)" << endl;}void left() {cout << "Java、Python、C++、...(公共分类列表)" << endl;}void content() {cout << "Java 学科视频" <<...

c++面向对象的编程【代码】

一、概述:  面向对象编程基于三个基本概念:数据抽象、继承和 动态绑定;  在c++中,用类进行数据抽象; 用类派生从一个类继承另一个类:派生类继承基类的成员;多态:动态绑定使编译器能够在 运行时 决定是使用基类中定义的函数还是派生类中定义的函数;面向对象编程的关键思想是多态性(polymorphism);实现多态必须通过:1、继承 2、动态绑定    通过动态绑定(dynamic binding)能够编写程序使用继承层次中任意类...

C/C++ 存储类别【代码】【图】

table { margin: auto; }本文介绍 C/C++ 中的存储类别。所谓的“存储类别”究竟是什么意思? 存储类别主要指在内存中存储数据的方式,其大致牵涉到变量的三个方面 —— 作用域、链接性和存储期,也就是说这三个方面决定了存储类别。下面先解释这三个概念,再介绍在 C/C++ 中的表示形式。存储类别定义作用域 (scope) 描述程序中可访问变量的区域,主要有块作用域 (block scope) 变量和 文件作用域 (file scope) 变量,平常我们也分别...

C++中的抽象类【代码】

一,抽象类1.纯虚函数的概念  纯虚函数是在父类中定义了一个只有声明而没有实现的函数,即使给出了纯虚函数的实现,那么编译器也会忽略。2.纯虚函数的说明形式virtual 返回值类型 函数名称(参数列表) = 0;3.纯虚函数的意义  纯虚函数只存在了函数的声明,而不存在函数的实现,在继承中为子类提供了一个统一的接口,每一个子类对象都可以去实现它,在多态特性中便会根据需要的子类对象而调用相应的子类业务。4.抽象类的概念...

《C++反汇编与逆向分析技术揭秘》--数据类型【代码】【图】

浮点数类型  IEEE标准从逻辑上采用一个三元组{S, E, M}来表示一个数N,它规定基数为2,符号位S用0和1分别表示正和负,尾数M用原码表示,阶码E用移码表示。根据浮点数的规格化方法,尾数域的最高有效位总是1,由此,该标准约定这一位不予存储,而是认为隐藏在小数点的左边,因此,尾数域所表示的值是1.M(实际存储的是M),这样可使尾数的表示范围比实际存储多一位。为了表示指数的正负,阶码E通常采用移码方式来表示,将数据的指...

7——C++类的使用【代码】

定义了一个类之后,便可以如同用int、double等类型符声明简单变量一样,创建该类的对象,称为类的实例化。 类的定义实际上是定义了一种类型,类不接收或存储具体的值,只作为生成具体对象的“蓝图”,只有将类实例化,创建对象(声明类的变量)后,系统才为对象分配存储空间。 //computer.h class computer //类定义{ private: char brand[20]; float price; public: void print(); void SetBrand(const c...

C++数据类型【代码】

C++数据类型类型关键字布尔型bool字符型char整型int浮点型float双浮点型double无类型void宽字符型wchar_ttypedef声明使用typedef为一个已有的类型取一个新的名字typedef type newname; 枚举类型枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。...

夺命雷公狗C/C++-----1---语言数据类型和常见32关键字【代码】【图】

重点提示: C语言中严格区分大小写 数据类型如下所示: 32个关键字如下所示:auto--------这个这个关键字用于声明变量的生存期为自动,即将不在任何类、结构、枚举、联合和函数中定义的变量视为全局变量,而在函数中定义的变量视为局部变量。这个关键字不怎么多写,因为所有的变量默认就是auto的。 break--------break语句 case-------- 一般配合switch实用 char--------字符类型 const--------const修饰的数据类型是指常类型,常...

C++二进制文件保存数据 类与结构体的区别【代码】

C++二进制文件保存数据 类与结构体的区别 运行如下测试代码: // OS: Ubuntu 19.10 // gcc version 9.2.1 20191008 (Ubuntu 9.2.1-9ubuntu2)#include <iostream> #include <fstream> #include <cstdlib> #include <string>using std::string; using std::ofstream; using std::cout; using std::cerr; using std::endl; using std::ios;class Test { private:int value;int data; public:Test() { value = 0; data = 0; }Test(int...

C++ auto类型说明符

auto 类型说明符可以让编译器来为我们分析表达式所属的类型:int a=0;auto b=a;  //b 为 int 类型auto 会忽略掉顶层 const (当为指针时为常量指针),会保留底层 const (指向常量的指针),即 auto 不会出现常量指针类型。

C++智能指针类型转换【代码】

#include <iostream> #include <memory>struct Base { int a; virtual void f() const { std::cout << "I am base!\n";}virtual ~Base(){} };struct Derived : Base {void d(){ std::cout << "Derived:d()\n"; }void f() const override{ std::cout << "I am derived!\n"; }~Derived(){} };int main(){auto basePtr = std::make_shared<Base>();std::cout << "Base pointer says: ";basePtr->f();auto derivedPtr = std::make_sha...

C++ 数字分类【代码】【图】

1012 数字分类 (20分) 输入格式: 每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。 输出格式: 对给定的 N 个正整数,按题目要求计算 A?1??~A?5?? 并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。 若其中某一类数字不存在,则在相应位置输出 N。 输入样例 1: 13 1 2 3 4 5 6 7 8 9 10 20 16 18? 输出样例...

C++的四种类型转换运算符:static_cast,dynamic_cast,const_cast,reinterpret_cast【代码】

类型转换运算符 1.dynamic_cast2.const_cast3.static_cast4.reinterpret_cast C语言有强制类型转换,C++认为C语言的这种转换过于松散,因此更加严格的限制允许的类型转换,使用四个转换的运算符,使得转换更加的规范注意:以下的四种转换的用法为 *_cast<type_name> (expression)1.dynamic_cast 该运算符的用途是,使得能够在类层次结构中进行向上转换,例如: High和Low是两个类,ph和pl分类指向这两个类的对象,则仅当Low是High的...

【C++】数据类型(上)整型 sizeof关键字 浮点型 字符型【代码】【图】

一、数据类型——整型 1、语法: 数据类型 变量名 = 变量初始值 例如:(int a = 7;) 2、数据类型存在意义:给变量分配合适的内存空间,不造成资源浪费 3、区别:占用空间不同 4、整型变量创建使用int a = 7;cout << "a = " << a << endl;5、整型大小比较 short < int <= long <= long long二、数据类型——sizeof关键字 1、语法:sizeof(数据类型/变量) 2、意义:利用sizeof关键字求出数据类型占用内存大小 3、sizeof关键字创...

C++类的详解【代码】【图】

超女选秀的例子我们玩了很久,为了学习的需要,暂时离开美眉们,我将采用实际项目开发的例子来讲解类的更多知识。 在C语言基础知识中已学习过文件操作,在实际开发中,为了提高效率,我会把文件操作封装成一个类,类的声明如下: // 文件操作类声明 class CFile { private:FILE *m_fp; // 文件指针bool m_bEnBuffer; // 是否启用缓冲区,true-启用;false-不启用public:CFile(); // 类的构造函数CFile(bool bEnBuffer); ...

C++_类继承2-多态公有继承

有时候希望同一个方法在派生类和基类中的行为是不同的。换句话说,方法的行为取决于调用该方法的对象。这种较复杂的行为称为多态——具有多种形态。即同一种方法其行为随上下文而异。有两种重要的机制可用于实现多态公有继承: 在派生类中重新定义基类的方法。 使用虚方法。 如果要在派生类中重新定义基类的方法,通常应将基类方法声明为虚的。这样,程序将根据对象类型而不是引用或指针的类型来选择方法版本...