C++基础知识
alinag
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
类模板
类模板为类定义一种模式,使得类中的某些数据成员,某些成员函数的参数,某些成员函数的返回值,能取任意类型(包括系统预定义的和用户自定义的数据类型)。 如果一个类中数据成员的类型不能确定,或者某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板,它的存在不是代表一个具体的实际的类,而是代表一类类。 C++语言编译系统会根据类模板和特定的数据类型产生一个类,即原创 2017-02-08 22:39:06 · 183 阅读 · 0 评论 -
多重继承
在派生类的声明中,基类有多个,则这种继承方式为多重继承。定义如下: class:[继承方式]基类名1,[继承方式]基类名2,...[继承方式]基类名n {};一. 二义性和支配原则 1. 二义性的两种情况 (1) 一个派生类是多重派生即由多个基类派生而来,加入这些基类中的成员有成员名相同的情况,如果使用一个表达式引用了这些同原创 2017-02-07 13:31:11 · 326 阅读 · 0 评论 -
指向类成员的指针
1.由类外指向类内的指针声明格式:类型符 类名::*指针名=类中数据成员地址描述;使用方法:类所定义的对象名.指针名#includeclass A{ public: int i,*p; A(){i=10;p=&i;}};int A::*p=&A::i; //p是类外指针void main(){ A aa,bb;原创 2017-01-05 16:14:26 · 259 阅读 · 0 评论 -
静态成员
静态成员分为静态数据成员和静态成员函数1. 静态数据成员 静态数据成员被存放在内存的某一单元内,该类的所有对象都可以访问它。无论建立多少个类的对象,都只有一个静态数据的副本。 含有静态数据成员的类在创建对象时不为静态数据成员分配存储空间。 class B{ static float x.y; int a,b;};创建一个类B的对象时,编译器原创 2017-01-05 14:22:27 · 213 阅读 · 0 评论 -
类的聚集——对象成员
对象成员也称为类的聚集,指在类的定义中数据成员可以为其他的类的对象,即类对象作为另一个类的数据成员。如果在类定义中包含有对象成员,则在创建类对象时先调用对象成员的构造函数,再调用类本身的构造函数。析构函数与构造函数的调用顺序正好相反。例1:含有对象成员的类的构造函数和析构函数的调用顺序#include#includeclass studentID{public:原创 2017-01-05 14:13:39 · 760 阅读 · 0 评论 -
类的对象
对象是类的实例,是属性和服务的封装体。1. 对象的定义两种方法:定义类的时候直接定义在使用时定义对象class location{.....};location dot1;2. 成员的访问无论是数据成员还是成员函数,只要是共有的(public),在类的外部就可以通过类的对象进行访问。通过对象调用成员 对象名.公有成员原创 2016-12-28 14:02:53 · 335 阅读 · 0 评论 -
类的基础知识
一.类由三部分构成:类名,数据成员和成员函数。class 类名{ private: //私有数据成员和成员函数 public: //公有数据成员和成员函数protected: //受保护的数据成员和成员函数};1.私有成员private: 私有成员是在类中被隐藏原创 2016-12-27 14:28:24 · 506 阅读 · 0 评论 -
类的大小
32位机器上,有三个类A B C定义如下, 请确定sizeof(A) sizeof(B) sizeof(C)的大小顺序.struct A{ A() {} ~A() {} int m1; int m2;};struct B:A{ B() {} ~B() {} int m1; char m2; static char m3原创 2016-12-02 16:17:08 · 293 阅读 · 0 评论 -
基类和派生类,虚函数
基类负责定义在层次关系中所有类共同拥有的成员,而每个派生类定义各自持有的成员。原创 2016-11-26 22:22:06 · 2437 阅读 · 0 评论 -
类的构造函数和析构函数
类构造函数:专门用于构造新对象,将值赋予它们的数据成员。构造函数是一种特殊的类成员函数,在创建类对象时被调用。构造函数的名称和类名相同,但通过函数重载,可以创建多个重名的构造函数,条件是每个函数的参数列表都不同。构造函数没有声明类型。原创 2016-11-23 18:57:09 · 543 阅读 · 0 评论 -
C++11 STL中的容器
C++11 STL中的容器 ================================================== 一、顺序容器:vector:可变大小数组; deque:双端队列; list:双向链表; forward_list:单向链表; array:固定大小数组; string:与vector相似的容器,但专门用于保存字符。 ======原创 2016-11-23 16:09:14 · 360 阅读 · 0 评论 -
友元
友元有3种:友元函数友元类友元成员函数一.友元函数友元函数常常用来重载二元运算符。创建友元函数:1.将其原型放在类声明中,并在原型中加上关键字friend。friend Time operator*(double m, const Time & t);虽然operator*()是在类声明中声明的,但它不是成员函数,因此不能使用成员运算原创 2016-11-23 19:25:38 · 188 阅读 · 0 评论 -
运算符重载
封装性、继承性和多态性是面向对象设计的三大支柱。 C++语言支持两种多态性:编译时的多态性和运行时的多态性。 编译时的多态性通过使用重载来获得,运行时的多态性通过使用继承和虚函数获得。 重载包括函数重载和运算符重载。一. 概述 1.定义 运算符重载是对已有的运算符赋予多重含义,同一个运算符作用域不用类型的数据导致不同的原创 2017-02-09 12:47:16 · 256 阅读 · 0 评论 -
构造函数和析构函数的调用顺序---引申知识点
1.构造函数和析构函数调用顺序原创 2016-08-29 11:17:05 · 286 阅读 · 0 评论 -
引用
引用用于程序的不同部分使用两个以上的变量名指向同一地址,使得对其中任一个变量的操作实际上都是对同一地址单元进行的操作。声明引用一般如下:int num;int &ref = num;int& ref=num;int & ref=num;注:引用不是值,不占用存储空间,声明引用时,目标的存储状态不会改变。引用一旦被初始化,就不能再重新赋值。#incl原创 2016-12-26 14:30:43 · 406 阅读 · 0 评论 -
指针数组和数组指针
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针数组指针:a pointer to an array,即指向数组的指针转载 2016-09-04 12:06:42 · 154 阅读 · 0 评论 -
.h头文件中的ifndef/define/endif 的作用
主要作用是防止重复引用,比如一个头文件定义如下:#ifndef _HEAD_H_#define _HEAD_H_//代码部分#endif假如该头文件第一次被引用,_HEAD_H_没有被定义,所以就执行宏定义,直到#endif该头文件第二次被引用的时候,_HEAD_H_已经被定义,下面的语句就不会执行原创 2016-12-02 15:16:29 · 2722 阅读 · 0 评论 -
函数模板和类模板
函数模板的实例化是由编译程序在处理函数调用时自动完成的类模板的实例化必须由程序员在程序中显式地指定函数模板针对仅参数类型不同的函数类模板针对仅数据成员和成员函数类型不同的类原创 2016-12-02 15:25:40 · 257 阅读 · 0 评论 -
函数,内联函数与宏的区别
先说宏和函数的区别:1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型.2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的.3. 宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的转载 2016-11-21 19:34:16 · 217 阅读 · 0 评论 -
C++ 进制
int u=010, v= 0x10, w=10;printf(“%d,%d,%d/n”,u,v,w);输出为:8,16,10010是8进制,对应的10进制为8。0x10是16进制,对应的10进制为16原创 2016-11-21 19:30:58 · 388 阅读 · 0 评论 -
字符串相关
有如下程序段:char a[] = "xyz", b[] = {'x', 'y', 'z'};if (strlen(a) > strlen(b)) printf("a > b\n");else printf("a 则程序输出:achar a[] = "xyz", b[] = {'x', 'y', 'z'};a容易理解,strlen(a)=3;原创 2016-11-21 23:36:21 · 213 阅读 · 0 评论 -
fork,vfork,clone
fork()是全部复制 vfork()是共享内存 clone()是可以将父进程资源有选择地复制给子进程,而没有复制的数据结构则通过指针的复制让子进程共享,具体要复制哪些资源给子进程,由参数列表中的clone_flags来决定。另外,clone()返回的是子进程的pid。 clone是fork的升级版本,不仅可以创建进程或者线程,还可以指定创建新的命名空间(namespace)、有选原创 2016-11-21 23:37:34 · 186 阅读 · 0 评论 -
C++ 复合类型--字符串
C++处理字符串有两种方法:C-字符串,基于string类库。一.C-字符串: 1. 定义: 以空字符结尾‘\0’. eg.: char cat={'f','a','b','\0'}; 或使用字符串常量(string constanst)或字符串字面值(string literal),eg.: char bird[11]="M原创 2016-11-22 14:51:46 · 298 阅读 · 0 评论 -
全局变量与局部变量
调用全局的变量前面要加::原创 2016-11-22 18:19:36 · 326 阅读 · 0 评论 -
基类与派生类,虚函数
基类与派生类,虚函数原创 2016-11-22 18:20:45 · 597 阅读 · 0 评论 -
软件开发绪论
1. 软件开发从本质上讲就是对软件所要处理的问题进行正确的认识,并把这种认识正确的描述出来。2.模块化程序设计的设计思想史:自顶向下、逐步求精。其程序结构按功能划分为若干个基本模块,这些模块成一个树状结构;各模块之间的关系尽可能简单,在功能上相对独立;每一个模块内部均由顺序、选择和循环三种基本结构组成;其模块化实现的具体方法是使用子程序、过程或函数。程序=数据结构+算法原创 2016-12-26 14:10:54 · 428 阅读 · 0 评论 -
动态内存的分配和释放
C++ 语言提供了两种方法进行内存的动态分配和释放:1. 从C标准库中继承来的malloc()和free()函数(包含头文件malloc.h)2. new和delete1.new 运算符指针变量= new 数据类型;new从堆内存中为程序分配可以保存某种类型数据的一块内存空间,并返回指向该内存的首地址,该地址存放于指针变量中。2.delete 运算符delete原创 2016-12-26 14:19:14 · 423 阅读 · 0 评论 -
牛客网--case:;break; 练习题
case后要加break,否则会一直顺序执行到最后一行。原创 2016-09-10 10:22:30 · 262 阅读 · 0 评论
分享