C++
牧码人XS
这个作者很懒,什么都没留下…
展开
-
C++学习第一课
一、什么叫做面向对象? 面向对象就是把数据及对数据的操作方法放在一起,作为一个相互依存的整体--------对象。对同类对象抽象出其共性,形成类。类中的大多数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。 面向过程就是自顶向下顺序执行,逐步求精;其程序结构是按功能划分为若干个基本模块,这些模块形成一原创 2017-01-18 21:48:38 · 406 阅读 · 0 评论 -
C++中cout,cerr,clog的区别
C++标准库定义了4个IO对象,cin,cout,cerr,clog .cin 为标准输入,cout,cerr,clog都是输出流对象,三者有什么区别呢?cout 与cerr的主要区别是cout的输出信息可以被重定向,而cerr则只能输出到标准输出(显示器)上。 例如下面程序编译后生成test.exe // test.cpp #inclu转载 2017-09-12 10:39:21 · 665 阅读 · 1 评论 -
C/C++ 复杂的声明
入门阶段,看见类似void * (*(*fp1)(int))[10];的复杂声明,晕乎。直接略过,这种复杂的东东,不应该是入门者需要去学习的知识。进阶阶段,这种知识就必需得搞得清清楚楚了,不然还等到高阶阶段才学习这个么?现在,就来带大家了解一下,这类复杂的声明怎么解?在解之前,先看一个入门的知识点,指针函数作为参数传递。[html] vi转载 2017-09-07 20:55:09 · 897 阅读 · 0 评论 -
C++中可以在构造函数中调用另一个构造函数吗?
题目如下:问下列代码的打印结果为0吗?[cpp] view plain copy#include #include using namespace std; struct CLS { int m_i; CLS( int i ) : m_i(i){} CLS()转载 2017-09-15 10:16:16 · 4441 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝,浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。 #include iostream>using namespace std;class CExample {private: int a;pub转载 2017-09-14 16:27:39 · 343 阅读 · 0 评论 -
thread join和detach区别
在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在默认情况下线程是非分离状态的,这种情况转载 2017-09-05 17:28:51 · 713 阅读 · 0 评论 -
C++格式化输出,C++输出格式控制
在输出数据时,为简便起见,往往不指定输出的格式,由系统根据数据的类型采取默认的格式,但有时希望数据按指定的格式输出,如要求以十六进制或八进制形式输出一个 整数,对输出的小数只保留两位小数等。有两种方法可以达到此目的。一种是我们已经介绍过的使用控制符的方法(详情请查看:C++输入cout与输出cin);第2种是使用流对象的有关成员函数。分别叙述如下。使用控制符控制输出格式控制格式的使用方转载 2017-01-17 13:33:54 · 539 阅读 · 0 评论 -
C++动态分配
设定义一个类:class ListArray{private:int size; //整型数组的大小,表示可放元素的个数int elem; //整型数组当前的元素个数,初始应为0,当elem等于size时,数组满int *p; //指向整型数组,动态分配内存空间public:ListArray(int s=100); //用s初始化整型数组的大小void put转载 2017-01-17 16:14:41 · 609 阅读 · 0 评论 -
类的继承
建立一个形状类Shape作为基类,派生出圆类Circle和矩形类Rectangle,求出面积并获取相关信息。具体要求如下:(1)形状类Shape(a)保护数据成员double x,y:对于不同的形状,x和y表示不同的含义,如对于圆,x和y均表示圆的半径,而对于矩形,x表示矩形的长,y表示矩形的宽。访问权限定义为保护类型是为了能被继承下去,以便派生类能直接访问x和y。(b)公有成员函原创 2017-01-21 21:45:14 · 350 阅读 · 0 评论 -
C++学习第四课
1.this指针 当前的对象,在类的内部访问成员使用,pubic,protected,private; 只能在非静态成员函数内部使用; 2. static 在C++中 static在类的内部修饰变量,对象是共享使用,在类内声明,在类外定义; 类型 类名::变量名 = 数值; 在类内声明的时候前面加static,在类外初始化原创 2017-01-22 22:11:23 · 381 阅读 · 0 评论 -
关于【error C3646: 未知重写说明符】的若干种可能性
如果在程序中出现了error C3646,那么这个错误可能是由多种问题所导致的,这篇文章将对多种错误及对应解决方法进行分析。在MSDN的官方网站中,Complier Error C3646的定义为unknown override specifier,并且其解释为The compiler found a token in the position where it expecte转载 2017-02-09 22:11:12 · 7606 阅读 · 0 评论 -
C++学习第三课
1.构造函数: 名字和类名相同,没有返回值,也不需要显式调用,在创建对象的时候自动执行。---专门用来初始化对象的;2.访问权限:在类的内部,无论public,protect,private,都可以互相访问;没有限制; 在类的外部,只能是通过对象访问public的成员,不能访问private,protected成员;通过类的内部public的函数访问private;原创 2017-01-20 21:38:25 · 358 阅读 · 0 评论 -
C++学习第二课
一、什么是堆?什么是栈?堆和栈的区别是什么? 栈:由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回 收。用malloc, calloc, realloc等分配内存的函数分配得到的就是在堆。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。 //main.cpp原创 2017-01-19 15:25:49 · 307 阅读 · 0 评论 -
如何创建一个类只能在堆(栈)上建立对象
在C++中,类对象的建立方式有两种,一种是静态建立类对象,如A a;另一种是动态建立类对象,如A* p = new A;这两种方式是有区别的: 静态建立类对象:是指全局对象,静态对象,以及分配在栈区域内的对象,编译器对它们的内存分配是在编译阶段就完成的,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类转载 2017-09-12 16:19:51 · 941 阅读 · 0 评论