![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++语言
吾竹清风
因为你努力了,所以时间给了财富!
展开
-
07_三目运算符增强
/* 三目运算符 在C语言中 表达式的结果 放在 寄存器 1、在C语言中,表达式的返回值是 变量的值 在C++中,表达式返回的是变量的本身 2、c++是如何做到的 让表达式返回一个内存空间 内存首地址 指针 3、本质 c++编译器帮程序员完成了 取地址的工作*/#if 1void test(){ int a = ...翻译 2018-07-23 18:39:44 · 133 阅读 · 0 评论 -
015_函数重载基础
//函数重载基础/* 1、函数重载(Function Overload) 用 同一个函数名 定义 不同的函数 当函数名和不同的参数搭配时函数的含义不同 2、函数重载至少满足下面的一个条件: 参数个数不同 参数类型不同 参数顺序不同 3、函数返回值不是函数重载的判断标准 重载...翻译 2018-07-31 14:43:35 · 128 阅读 · 0 评论 -
016_函数重载与函数指针
/* 函数重载与函数指针 当使用重载函数名对函数指针进行赋值时 根据重载规则挑选与函数指针参数列表一致的候选者 严格匹配候选者的函数类型与函数指针的函数类型*/#if 1void myfunc(int a){ printf("a:%d \n", a);}void myfunc(char *p){ printf("%s \n",...原创 2018-07-31 15:03:32 · 198 阅读 · 0 评论 -
017_类的封装&类的基本访问控制&class与struct的区别
#include "iostream"using namespace std;/* 1)封装(Encapsulation) A)封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作) 合成一个整体,这在计算机世界中是用类与对象实现的。 B)封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让 可信的类或者对象操作,...翻译 2018-08-08 08:46:59 · 174 阅读 · 0 评论 -
020_拷贝构造函数的四种调用时机
/* copy构造函数的调用 时机1 时机2*/#if 1class Test4{public: Test4() //无参数构造函数 { m_a = 0; m_b = 0; cout << "我是构造函数,自动被调用了" <&翻译 2018-09-11 14:46:50 · 1273 阅读 · 0 评论 -
018_构造函数与析构函数的概念
/* 有关构造函数 构造函数(constructor)来处理对象的初始化。构造函数是一种特殊的成员函数, 与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行。1、构造函数定义及调用 1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函数; 2)构造函数在定义时可以有参数; 3)没有任何返回类型的声明。 2、构造函数的调用 自动调用...翻译 2018-09-11 09:24:50 · 181 阅读 · 0 评论 -
019_构造函数的分类以及对象的三种初始化方法
/* 构造函数的分类*/#if 1class Test{public: //1、无参数构造函数 Test() { m_a = 0; m_b = 0; cout << "我是构造函数 被执行了" << endl; } //2、有参数构造函数 Test(int a...原创 2018-09-11 10:22:35 · 577 阅读 · 0 评论 -
021_构造函数写了,就必须用
/* 当类中定义了 拷贝 构造函数时, c++编译器不会提供无参数 构造函数 当类中定义了 有参数 构造函数时,c++编译器不会提供无参数 构造函数 在定义类时, 只要你写了构造函数,则必须要用 */第一种情况#if 1class Test{public: //第一种情况 不写任何函数,编译通过,使用默认的构造函数 void printT() { cou...翻译 2018-11-01 14:36:43 · 379 阅读 · 0 评论 -
22深拷贝和浅拷贝
/* 默认复制构造函数可以完成对象的数据成员值简单的复制 对象的数据资源是由指针指示的堆时,默认复制构造函数仅作指针值复制 浅拷贝程序C++提供的解决方法: 显示提供copy构造函数 显示操作重载=号操作,不使用编译器提供的浅copy*/#if 1class Name{public: //构造函数 Name(const char *myp) { m_len ...翻译 2018-11-01 15:18:16 · 141 阅读 · 0 评论 -
023多个对象构造和析构--》对象初始化列表
/* 1)对象初始化列表出现原因 1.必须这样做: 如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有 一个带参数的构造函数,没有默认构造函数。这时要对这个类成员进行初始化, 就必须调用这个类成员的带参数的构造函数,如果没有初始化列表,那么他将无法 完成第一步,就会报错。 2、类成员中若有const修饰,必须在对象初始化的时候,给const int m 赋值 ...翻译 2018-11-01 15:27:28 · 181 阅读 · 0 评论 -
024构造函数中调用构造是危险的行为
/* 构造中调用构造是危险的行为*/#if 1class MyTest{public: MyTest(int a, int b, int c) { this->a = a; this->b = b; this->c = c; } MyTest(int a, int b) { this->a = a; this->b = b...翻译 2018-11-01 15:42:56 · 132 阅读 · 0 评论 -
025 、new和delete的基本使用,是c++的操作符
/* new和delete的基本使用,是c++的操作符 结论: new不但可以分配内存,还可以初始化对象 malloc不会调用类的构造函数 free不会调用类的析构函数*/#if 1class Test{public: Test(int _a) { a = _a; cout &lt;&lt; "构造函数执行" &lt;&lt; endl; } ~Te...翻译 2018-11-01 15:51:24 · 188 阅读 · 0 评论 -
026静态成员变量和静态成员函数
/* 定义静态成员变量 1、关键字 static 可以用于说明一个类的成员 2、静态成员提供了一个同类对象的共享机制 3、把一个类的成员说明为 static 时,这个类无论有多少个对象被创建, 这些对象共享这个 static 成员 4、静态成员局部于类,它不是对象成员*/#if 1class counter{ static int num; //声明与定义静态数据...翻译 2018-11-01 16:24:25 · 180 阅读 · 0 评论 -
027c++对象模型
/* 1)C++类对象中的成员变量和成员函数是分开存储的 成员变量: 普通成员变量:存储于对象中,与struct变量有相同的内存布局和字节对齐方式 静态成员变量:存储于全局数据区中 成员函数:存储于代码段中。 1、C++类对象中的成员变量和成员函数是分开存储的。C语言中的内存四区模型仍然有效! 2、C++中类的普通成员函数都隐式包含一个指向当前对象的this指针。 3、静态成员函...翻译 2018-11-01 20:23:35 · 155 阅读 · 0 评论 -
028_this指针和成员函数中加入const后修饰的是谁
//this指针和const#if 1class A{public: //普通成员函数 A(int a, int b)// ====》A( A *pThis, int a, int b); { this->a = a; this->b = b; } void printA()//==>void printA(A * this) { cout &...翻译 2018-11-01 20:34:43 · 198 阅读 · 0 评论 -
014_默认参数和占位参数
//默认参数#if 0void myprint(int x = 3){ cout &lt;&lt; "x = " &lt;&lt; x &lt;&lt; endl;}//2 在默认参数规则,如果默认参数出现,那么右边的都必须有默认参数//void myprint2(int m, int n, int x = 3, int y ) //编译器编译错误voi翻译 2018-07-31 14:26:21 · 185 阅读 · 0 评论 -
013_内联函数
/* inline 内联函数 1、inline 必须和函数体的实现,写在一块 2、C++编译器直接将函数体 插入 在函数调用的地方 3、内联函数省去了普通函数调用时压栈,跳转和返回的开销 4、内联函数由 编译器处理,直接将编译后的函数体插入调用的地方 5、宏代码片段 由预处理器处理, 进行简单的文本替换,没有任何编译过程*/#if 1inli...翻译 2018-07-30 21:37:38 · 247 阅读 · 0 评论 -
08——const的基础用法
/* C语言中的const变量是一个冒牌货 C语言中const变量是只读变量,有自己的存储空间 C++中的const常量 可能分配存储空间,也可能不分配存储空间 以下两种情况分配内存空间 a、当const常量为全局,并且需要在其它文件中使用 b、当使用&操作符取const常量的地...翻译 2018-07-23 19:42:00 · 150 阅读 · 0 评论 -
09_引用的基本概念(c++中的语法)
/* 引用的基本概念 变量名回顾 变量名实质上是一段连续存储空间的别名,是一个标号(门牌号) 程序中通过变量来申请并命名内存空间 通过变量的名字可以使用存储空间 问题1:对一段连续的内存空间只能取一个别名吗? 可以的 a) 在C++中新增加了引用的概念 b) 引用可以看作一个已定义变量的别名 c) 引用的语法:Type...原创 2018-07-23 20:26:05 · 147 阅读 · 0 评论 -
10_引用本质探究
1翻译 2018-07-23 22:00:05 · 146 阅读 · 0 评论 -
10_函数返回值是一个引用
/* 函数返回值是一个引用*/#if 1int getAA1(){ int a; a = 10; return a;//a的值返回到了寄存器里了}/* 返回一个引用 返回a的本身 返回a的一个副本 10*/int&amp; getAA2(){ int a; //如果返回栈上的 引用, 有可能会有问题 a...翻译 2018-08-17 12:28:24 · 285 阅读 · 0 评论 -
c++声明周期管理
1. define _CRT_SECURE_NO_WARNINGSinclude include include “string”include using namespace std;/* 有关构造函数 1、构造函数定义及调用 1)C++中的类可以定义与类名相同的特殊成员函数,这种与类名相同的成员函数叫做构造函...原创 2018-07-19 19:07:56 · 520 阅读 · 0 评论 -
01简单的c++程序
#include "iostream" //包含c++的头文件 //iostream.husing namespace std; //使用命名空间 std 标准的命名空间 (在这个命名空间中定义了很多标准定义)void main(){ //printf("hello....\n"); //cout 标准输出 黑屏幕, //<< 左移操作符 在c++里...翻译 2018-07-19 20:12:17 · 231 阅读 · 0 评论 -
02体会 面向过程 与 面向对象 方法 求取圆的面积
//用面向过程的方法求解圆形的面积// &amp;lt;&amp;lt; &amp;gt;&amp;gt; 不会用: 标准输入cin和标准输出cout 始终写在操作符的左边 void main(){ double r = 0; double s = 0; cout&amp;lt;&amp;lt;&quot;请输入圆形的半径:&quot;;原创 2018-07-19 20:23:09 · 706 阅读 · 0 评论 -
02_1 初学者的易犯模型
#include &quot;iostream&quot;using namespace std;#if 1class circle{public: double r; double pi = 3.1415926; double area = pi*r*r;//初始化的时候已经执行了 //造成area是乱码};//2010编译不通过 但是在2013编译器能编译通过voi...原创 2018-07-19 20:39:39 · 118 阅读 · 0 评论 -
03_namespace
C++命名空间基本常识 所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。 一 :和原创 2018-07-19 20:53:25 · 115 阅读 · 0 评论 -
04_实用性加强_register增强_检测增强
/* 1、实用性增强 C语言中的变量都必须在作用域开始的位置定义!! C++中更强调语言的“实用性”,所有的变量都可以在需要使用时再定义。 2、register 关键字 register关键字 请求编译器让变量a直接放在寄存器里面,速度快 在c语言中 register修饰的变量 不能取地址,但是在c++里面做了内容 C语言中无法取得reg...翻译 2018-07-19 21:32:06 · 192 阅读 · 0 评论 -
05_struct关键字增强
/*struct类型的加强: C语言的struct定义了一组变量的集合,C编译器并不认为这是一种新的类型 C++中的struct是一个新类型的定义声明 struct 关键字增强 class 关键字完成的功能一样,也可以用public/protected关键字 区别后面介绍 抛砖*/#if 1struct Teacher{public: int ...原创 2018-07-20 14:32:17 · 85 阅读 · 0 评论 -
06_bool类型
/* 新增bool类型 C++在C语言的基本类型系统之上增加了bool C++中的bool可取的值只有true和false 理论上bool只占用一个字节, 如果多个bool变量定义在一起,可能会各占一个bit,这取决于编译器的实现 true 代表真值, 编译器内部用1来表示 false 代表非真值,编译器内部用0来表示 boo...原创 2018-07-20 14:41:09 · 141 阅读 · 0 评论 -
011_指针的引用
/* 指针的引用*/#if 1struct Teacher{ char name[64]; int age;};int getTeacher(Teacher **p){ if (p == NULL) { return -1; } Teacher *tmp; tmp = (Teacher *)malloc...翻译 2018-07-30 19:56:43 · 154 阅读 · 0 评论 -
012_常引用,引用就是一个常指针
//常量引用#if 1void test(){ //普通引用 int a = 10; int &b = a; printf("b:%d\n", b); /* 引用就是一个常量指针 Type &p ==> Type * const p 常引用 常引用让变量(引用)...翻译 2018-07-30 20:48:26 · 381 阅读 · 0 评论 -
029全局函数与成员函数(返回元素、返回引用要使用*this)
/* 成员函数与全局函数的区别与转换*/#if 1class Test{public: Test(int a = 0, int b = 0) { this->a = a; this->b = b; } //1、函数返回元素 Test TestAdd(Test &obj)//对应的全局函数 Test TestAdd(Test &t1, ...翻译 2018-11-01 21:24:47 · 266 阅读 · 0 评论