C++语法基础
文章平均质量分 54
Johhny Rade
年青
展开
-
36~C++ 内联函数
1. 形式及作用考虑宏的用法,做一个乘法运算#define SQUARE(X) ((X)*(X))...int main(){ int val1 = 2; float val2 = 0.1; int result1 = SQUARE(val1); //result1 = ((val1) * (val1)) float result2 = SQUARE(val2); //result2 = ((val2) * (val2)) ...}内联函数与宏类似,只在写法上有区别原创 2021-11-06 11:29:53 · 244 阅读 · 0 评论 -
01~C++数据类型
mm原创 2019-02-17 17:44:13 · 339 阅读 · 0 评论 -
02~C++名字空间
1 名字空间是啥,有啥用?让我们先贴一段代码,猜一猜这段代码输出是什么结果// namespace.cpp#include <iostream>namespace Department_X { static int id = 99; void fool(void) { std::cout << "departmentX id = " &am原创 2019-02-17 22:06:22 · 233 阅读 · 0 评论 -
03~C++函数重载
1、重载定义{ 同一个作用域中,函数名相同,参数表不同的一组函数,构成重载关系}原创 2019-02-18 22:56:09 · 167 阅读 · 0 评论 -
04~C++类的声明
C++程序员眼中的类类简单说明读者如果了解C语言的话,可以把类理解为:变量与函数指针的集合。一些C++程序员形象的把类中的变量叫做对象的属性,函数叫做对象行为类声明:不包含任何成员函数/变量#include <iostream>using namespace std;/*类声明*/class Eg {};int main (void){ cout ...原创 2019-11-18 21:51:45 · 333 阅读 · 0 评论 -
05~C++访控属性
public 公有访问控制属性,对类的访问不做限制//public.cpp#include <iostream>using namespace std;class Department_SW {//访问控制属性 public 从这里开始public: void show_mem (void) { cout << "Showing member" &l...原创 2019-11-18 21:54:45 · 192 阅读 · 0 评论 -
06~C++构造函数
5、 构造函数构造函数负责为类实例化之后的初始化操作。构造函数也是普通的成员函数,其特殊的地方在于简化了C++编程,构造函数由编译器自动调用构造函数自动调用,构造函数不需要返回值,也不需要写//constructor.cpp#include <iostream>using namespace std;class Store {public: /*类Store的构造...原创 2019-11-18 21:56:03 · 81 阅读 · 0 评论 -
07~C++ 初始化表
构造函数与初始化表初始化表功能上等同给成员变量赋值#include <iostream>using namespace std;class Store {public: /*初始化表语法如下*/ Store (int fru, int wea) : fruits (fru), weapons (wea) { /* 就不用这样写了!!! fruits = ...原创 2019-11-18 22:19:48 · 430 阅读 · 0 评论 -
08~C++赋值函数
导入:C语言 “=” 号,可进行的运算如:int a,b,c;/*运算过程:b=c-> a=b*/a=b=c;/*运算过程: a=b->a=c*/(a=b)=c;同理,如果类支持 “=” 运算,应当支持如下形式class A{};int main(){ A a,b,c; a=b=c; /*=返回为左值,非常属性*/ (a=b)=c;}#inc...原创 2019-11-19 15:52:24 · 95 阅读 · 0 评论 -
09~C++类型转换
类型转换两种不同类型的数据进行运算,编译器会将其中一种类型转换为另一种类型基本数据类型 的类型转换#include <iostream>using namespace std;int main(void) {/*隐式转换允许规则*/long count; //count = 8; //int -> long intdouble time; time = ...原创 2019-11-19 16:38:31 · 99 阅读 · 0 评论 -
10~C++ explicit
09~C++类型转换 一节列举了显式类型转换和隐式类型转换的几种方式;但是读者应当意识到:隐式类型转换未必总是安全的。为了解决隐式类型转换的安全问题,C++提供了explicit 关键字用来声明—该类型转换函数必须使用显式类型转换的方式调用,也就是强调程序员清楚的知道自己在做什么,否则不允许编译应当注意:只有构造函数或者类型转换函数可以使用explicit修饰#include <io...原创 2019-11-19 17:03:09 · 72 阅读 · 0 评论 -
11~C++=号与拷贝构造
符号"=",根据代码书写风格可能解释为调用不同的函数;给程序员带来困扰的同时,程序员也不得不去了解C++是如何作函数调用的!!!#include <iostream>using namespace std;struct Stack { Stack(int a ) { cout << "int->Stack类型转换/单参构造函数" << en...原创 2019-11-19 17:33:39 · 216 阅读 · 0 评论 -
12~C++静态成员
#include <iostream>using namespace std;class HisEgg {public: static void show_eggs(void) { cout << "Egg num = " << eggs << endl; } static int egg;};class HerEgg {.原创 2019-04-03 21:49:17 · 139 阅读 · 0 评论 -
13~C++ this指针
this 指针引入//basic.cpp#include &lt;iostream&gt;using namespace std;class HeyBaby{public: HeyBaby(int x, int y) : cute_score (x), nauty_score(y){ cout &lt;&lt; "constructor this&amp; = "原创 2019-03-31 22:36:19 · 99 阅读 · 0 评论 -
14~C++动态内存
basic usage#include &lt;iostream&gt;using namespace std;#include &lt;iostream&gt;using namespace std;int main(void){ //使用new ,同时初始化 int *pa = new int(99); double *pd = new double(99.9); ...原创 2019-03-31 22:33:32 · 204 阅读 · 0 评论 -
15~C++析构函数与变量生命周期
信息原创 2019-03-31 22:30:22 · 194 阅读 · 0 评论 -
16~C++运算符重载
xx原创 2019-11-20 10:26:11 · 60 阅读 · 0 评论 -
17~C++ new和delete运算符重载
xx原创 2020-01-03 13:05:20 · 230 阅读 · 0 评论 -
18~C++友元函数
xx原创 2019-11-20 11:51:49 · 110 阅读 · 0 评论 -
19~C++友元类
同友元函数类似:假设类A声明类B为友元类,那么类B可以自由访问类A中的成员变量#include <iostream>using namespace std;/*对类先做一个短式声明,不然student类内部压根不知道teacher president是什么*/class teacher;class president;class student{public: s...原创 2019-11-20 12:24:54 · 140 阅读 · 0 评论 -
20~C++类型转换运算符
目录转换运算符 cast显式类型转换static_castreinterpret_castdynamic_cast转换运算符 cast语法: typename1 val1 = (typename1)val2;把一个整型值给一个浮点变量,编译器会暗地里调一个函数,或者更可能插入代码来把整型值付给一个浮点变量#include <iostream>int ...原创 2019-07-12 13:51:54 · 109 阅读 · 0 评论 -
21~C++继承模型
1、继承与安全取地址1.1、线性继承模型继承模型:A|B|C对派生类C取地址A*,B*,从这种继承模型,得到的都会是&C,因为&C同时是A,B,C三种类型的首地址#include <iostream>using namespace std;class A{public: A (void) { cout << "A this ="...原创 2019-04-06 11:10:28 · 144 阅读 · 0 评论 -
22~C++钻石继承
首先,何为钻石继承,顾名思义,在类的继承过程中,继承结构是一个类似菱形(钻石)的结构就属于钻石继承,如下:这是一个最简单的钻石继承。实际上,在复杂的继承表中,只要子类按不同的继承路径回溯到基类有菱形结构,均属钻石继承。下面先看一个例子,钻石继承在C++程序设计中带来的问题。//diamond.cpp #include<iostream> using namespace std;...转载 2020-01-02 21:06:13 · 980 阅读 · 0 评论 -
23~C++抛出异常类型
异常抛出基本类型,类类型,指针类型。较为复杂的情形,这里针对类类型指针进行说明1、抛出指针类型可抛出类类型,基本类型,指针类型1.1、抛出B* 指针,捕获B*指针#include <iostream>using namespace std;class A{public: A (void) { }int m_a;};class B {public: B (...原创 2019-04-06 13:33:04 · 1354 阅读 · 0 评论 -
24~C++ 多态
派生类对象的地址可以赋值给基类指针。对于通过基类指针调用基类和派生类中都有的同名、同参数表的虚函数的语句,编译时并不确定要执行的是基类还是派生类的虚函数;而当程序运行到该语句时,如果基类指针指向的是一个基类对象,则基类的虚函数被调用,如果基类指针指向的是一个派生类对象,则派生类的虚函数被调用。这种机制就叫作“多态(polymorphism)”。所谓“虚函数”,就是在声明时前面加了 virtual...转载 2020-01-02 21:23:17 · 220 阅读 · 0 评论 -
25~C++ 虚函数表
参考链接转载 2020-01-02 23:00:23 · 56 阅读 · 0 评论 -
26~C++多态条件下的this指针
大家都知道,this指针指向了对象的起始地址本节结合多态条件说明一个有关this指针的趣事!#include <iostream>using namespace std;class A {public: A (void) { cout << "A this " << this << endl; } virtual void fo...原创 2020-01-02 23:44:23 · 241 阅读 · 0 评论 -
27~C++纯虚函数 抽象类 纯抽象类
1.形如:virtual 返回类型 函数名 (形参表) = 0;的虚函数,称为纯虚函数或抽象方法,表达一种抽象化的行为概念2.如果一类含有至少一个纯虚函数,那么该类就是一个抽象类,抽象类不能被实例化为对象3.除了构造函数和析构函数以外全部成员函数都是纯虚函数的抽象类叫做纯抽象类,亦称接口类#include <iostream>using namespace std;cl...翻译 2020-01-03 13:19:17 · 264 阅读 · 0 评论 -
28~C++ 局部类和嵌套类
文章目录局部类嵌套类局部类在一个函数体内定义的类称为局部类。局部类中只能使用它的外围作用域中的对象和函数进行联系,因为外围作用域中的变量与该局部类的对象无关。局部类不能被外部所继承。在定义局部类时需要注意:局部类中不能说明静态成员函数,并且所有成员函数都必须定义在类体内。在实践中,局部类是很少使用的。下面是一个局部类的例子。 int a; void fun() { stat...转载 2020-01-03 13:55:06 · 70 阅读 · 0 评论 -
29~C++ 动态绑定概念
文章目录动态绑定概念动态绑定对性能的影响动态绑定概念当编译器“看到”通过指针或引用调用虚函数的语句时,并不急于生成有关函数调用的指令,相反它会用一段代码替代该语句,这段代码将在运行时执行如下动作:1)确定调用指针或引用的目标对象的真实类型2)从调用指针或引用的目标对象中找到虚指针即其所指向的虚表,并从虚表中获取所调用虚函数的入口地址3)根据虚函数的入口地址,执行该函数的代码上述函数地...翻译 2020-01-03 14:12:57 · 146 阅读 · 0 评论 -
30~C++ RTTI (runtime type Identification)
文章目录RTTI 简介1. typeid与typeinfo 操作符2. RTTI应用:动态类型转换RTTI 简介R T T I是运行阶段类型识别(Runtime Type Identification)的简称。这是新添加到C++中的特性之一,很多老式实现不支持。另一些实现可能需要RTTI开关的编译器设置。RTTI旨在为程序在运行阶段确定对象的类型提供一种标准方式。RTTI只适用于包含虚函数...翻译 2020-01-03 14:41:48 · 171 阅读 · 0 评论 -
31~C++ 类继承与析构
文章目录1、一般继承与delete 子类指针2、一般继承与delete 基类指针3、RTTI与delete 基类指针1、一般继承与delete 子类指针#include <iostream>using namespace std;class A{public: ~A(void) { cout << "destructor A" << end...原创 2020-01-03 16:02:42 · 152 阅读 · 0 评论 -
32~C++ 什么函数可以是虚函数?
虚函数必须是类的一般成员函数,所以:全局函数 NO静态成员函数 NO友元形式的操作符函数 NO析构函数 YES非静态成员函数 YES成员形式的操作符函数 YES另外由于构造函数不需要虚化,所以构造函数没有虚函数:构造函数 NO...原创 2020-01-03 16:06:42 · 614 阅读 · 0 评论 -
33~C++异常处理过程
文章目录1、异常抛出2、异常捕获3、异常流程3.1、不发生异常时的流程3.2、发生异常时的流程3.3、 其它情形4、异常说明5、异常处理举例5.1 抛出整型5.2 抛出类类型 -015.3 抛出类类型-025.4 捕获异常,然后向上抛出捕获到的异常6 标准库异常6.1继承图谱6.2 示例代码(待完成)1、异常抛出throw 异常对象:既可以抛出基本类型的异常throw -1;throw ...原创 2020-01-03 22:00:59 · 219 阅读 · 0 评论 -
34~ C++ 输出流
xx原创 2020-01-07 18:47:18 · 104 阅读 · 0 评论 -
35~C++ IO输入流
文章目录1. 输入流对象 cin2. 输入流检查规则3. 数据读取举例3.1 读取整数3.2 连续读取3.3 考虑进制4. 测试状态4.1 测试举例4.2 清空状态5. 非格式化读取5.1 读取一个字符5.2 读取一行数据6. 其它接口1. 输入流对象 cinobject std::cinextern std::istream cin;2. 输入流检查规则cin >> val...原创 2020-01-07 20:32:33 · 110 阅读 · 0 评论