C/C++
Grevi
这个作者很懒,什么都没留下…
展开
-
【C++】接口(抽象类)
接口描述了类的行为和功能,而不需要完成类的特定实现。C++ 接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用 "= 0" 来指定的,如下所示:class Box{ public: // 纯虚函数 virtua转载 2017-04-08 14:46:00 · 731 阅读 · 0 评论 -
【C++】拷贝构造函数
拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:通过使用另一个同类型的对象来初始化新创建的对象。复制对象把它作为参数传递给函数。复制对象,并从函数返回这个对象。如果在类中没有定义拷贝构造函数,编译器会自行定义一个。如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造转载 2017-04-08 14:34:38 · 404 阅读 · 0 评论 -
【C++】构造函数&析构函数的解析(应用)
原文来自 csdn/意念586创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值。注意,类的数据成员是不能在声明类时初始化的。如果一个类中所有的成员都是公用的,则可以在定义对象时对数据成员进行初始化。如:class Time{ public : //声明为公用成员 hour; minute; sec;};Time t1={14,56,转载 2017-03-06 17:59:32 · 561 阅读 · 0 评论 -
【C++】类构造函数 & 析构函数
类的构造函数类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。下面的实例有助于更好地理解构造函数的概念:#include using namespace std; class Line{ public:转载 2017-03-06 17:55:24 · 374 阅读 · 0 评论 -
【C++】类访问修饰符(public&private&protected )
数据隐藏是面向对象编程的一个重要特点,它防止函数直接访问类类型的内部成员。类成员的访问限制是通过在类主体内部对各个区域标记 public、private、protected 来指定的。关键字 public、private、protected 称为访问说明符。一个类可以有多个 public、protected 或 private 标记区域。每个标记区域在下一个标记区域开始之前或者在遇到类主体转载 2017-03-06 17:46:20 · 760 阅读 · 0 评论 -
【C++】class和struct的区别
这里有两种情况下的区别。(1)C的struct与C++的class的区别。(2)C++中的struct和class的区别。在第一种情况下,struct与class有着非常明显的区别。C是一种过程化的语言,struct只是作为一种复杂数据类型定义,struct中只能定义成员变量,不能定义成员函数。例如下面的C代码片断: struct Point {转载 2017-03-06 17:15:54 · 349 阅读 · 0 评论 -
【C++】关于以下划线开头的变量名
系统头文件里将宏名、变量名、内部函数名用"_"开头就是为了避免与用户用的名字冲突。因为当你#include 系统头文件时,这些文件里的名字都有了定义,如果与你用的名字冲突,就可能引起各种奇怪现象。换句话说:我们写程序时一定不要用"_"开头的名字,以免与系统头文件的名字冲突,产生奇怪的问题(很难debug弄清楚,当心)。Python:核心风格:避免用下划线作为变量名的开始。因为下划线转载 2017-03-06 16:46:14 · 25473 阅读 · 0 评论 -
【C++】指针(6):从函数返回指针
C++ 从函数返回指针我们已经了解了 C++ 中如何从函数返回数组,类似地,C++ 允许您从函数返回指针。为了做到这点,您必须声明一个返回指针的函数,如下所示:int * myFunction(){...}另外,C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。现在,让我们来看下面的函数,它会生成 10 个随机数,并使用表示指针转载 2017-02-03 18:51:34 · 561 阅读 · 0 评论 -
【C++】指针(5):传递指针给函数
C++ 传递指针给函数C++ 允许您传递指针给函数,只需要简单地声明函数参数为指针类型即可。下面的实例中,我们传递一个无符号的 long 型指针给函数,并在函数内改变这个值:#include #include using namespace std;void getSeconds(unsigned long *par);int main (){ unsig转载 2017-02-03 18:50:02 · 789 阅读 · 0 评论 -
【C++】友元函数
类的友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数。友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字 friend,如下所转载 2017-04-08 14:35:30 · 273 阅读 · 0 评论 -
C++ 内联函数
C++ 内联函数是通常与类一起使用。如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方。对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编译器需要重新更换一次所有的代码,否则将会继续使用旧的函数。如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。如果已定义的函数多于一行,编转载 2017-04-08 14:36:02 · 423 阅读 · 0 评论 -
【C++】数据封装
所有的 C++ 程序都有以下两个基本要素:程序语句(代码):这是程序中执行动作的部分,它们被称为函数。程序数据:数据是程序的信息,会受到程序函数的影响。封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念,这样能避免受到外界的干扰和误用,从而确保了安全。数据封装引申出了另一个重要的 OOP 概念,即数据隐藏。数据封装是一种把数据和操作数据的函数捆绑在一起转载 2017-04-08 14:45:18 · 575 阅读 · 0 评论 -
【C++】数据抽象
C++ 数据抽象数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程(设计)技术。让我们举一个现实生活中的真实例子,比如一台电视机,您可以打开和关闭、切换频道、调整音量、添加外部组件(如喇叭、录像机、DVD 播放器),但是您不知道它的内部实现细节,也就是说,您并不知道它是如何通过缆线接收信号,如转载 2017-04-08 14:44:44 · 337 阅读 · 0 评论 -
【C++】多态
多态按字面的意思就是多种形态。当类之间存在层次结构,并且类之间是通过继承关联时,就会用到多态。C++ 多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数。下面的实例中,基类 Shape 被派生为两个类,如下所示:#include using namespace std; class Shape { protected: int wid转载 2017-04-08 14:43:52 · 361 阅读 · 0 评论 -
【C++】重载运算符和重载函数
C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。转载 2017-04-08 14:43:00 · 1022 阅读 · 0 评论 -
【C++】继承
面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行时间的效果。当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。继承代表了 is a 关系。例如,哺乳动物是动物,狗是哺乳动物,因此,转载 2017-04-08 14:39:07 · 354 阅读 · 0 评论 -
【C++】类的静态成员
我们可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化,如下面的实例所转载 2017-04-08 14:37:55 · 392 阅读 · 0 评论 -
【C++】指向类的指针
一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成员访问运算符 ->,就像访问指向结构的指针一样。与所有的指针一样,您必须在使用指针之前,对指针进行初始化。下面的实例有助于更好地理解指向类的指针的概念:#include using namespace std;class Box{ public: // 构造函数定义转载 2017-04-08 14:37:13 · 1589 阅读 · 0 评论 -
【C++】this 指针
在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。下面的实例有助于更好地理解 this 指针的概念:#include using namespace std;class Box{转载 2017-04-08 14:36:40 · 298 阅读 · 0 评论 -
【C++】指针(5):指向指针的指针
C++ 指向指针的指针(多级间接寻址)指向指针的指针是一种多级间接寻址的形式,或者说是一个指针链。通常,一个指针包含一个变量的地址。当我们定义一个指向指针的指针时,第一个指针包含了第二个指针的地址,第二个指针指向包含实际值的位置。一个指向指针的指针变量必须如下声明,即在变量名前放置两个星号。例如,下面声明了一个指向 int 类型指针的指针:int **var;当一个转载 2017-02-03 18:43:09 · 456 阅读 · 0 评论 -
【C++】指针(4):指针数组
C++ 指针数组先让我们来看一个实例,它用到了一个由 3 个整数组成的数组:#include using namespace std;const int MAX = 3; int main (){ int var[MAX] = {10, 100, 200}; for (int i = 0; i MAX; i++) { cout "V转载 2017-02-03 18:41:18 · 319 阅读 · 0 评论 -
【C++】指针(3):指针&数组
C++ 指针 vs 数组指针和数组是密切相关的。事实上,指针和数组在很多情况下是可以互换的。例如,一个指向数组开头的指针,可以通过使用指针的算术运算或数组索引来访问数组。请看下面的程序:#include using namespace std;const int MAX = 3; int main (){ int var[MAX] = {10, 100, 200转载 2017-02-02 15:54:35 · 391 阅读 · 0 评论 -
【C++】存储类
C++ 存储类存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C++ 程序中可用的存储类:autoregisterstaticexternmutableauto 存储类auto 存储类是所有局部变量默认的存储类。{ int mount; auto int mo转载 2017-02-02 14:53:37 · 377 阅读 · 0 评论 -
【C++】定义常量
定义常量在 C++ 中,有两种简单的定义常量的方式:使用 #define 预处理器。使用 const 关键字。#define 预处理器下面是使用 #define 预处理器定义常量的形式:#define identifier value具体请看下面的实例:#include using namespace std;#define LENGT转载 2017-02-02 14:50:49 · 2114 阅读 · 0 评论 -
【C++】变量作用域
局部变量在函数或一个代码块内部声明的变量,称为局部变量。它们只能被函数内部或者代码块内部的语句使用。下面的实例使用了局部变量:#include using namespace std; int main (){ // 局部变量声明 int a, b; int c; // 实际初始化 a = 10; b = 20; c = a + b; c转载 2017-02-02 14:46:17 · 542 阅读 · 0 评论 -
【C++】extern关键字
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。也就是说extern有两个作用,第一,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名转载 2017-02-02 14:27:21 · 225 阅读 · 0 评论 -
【C++】变量声明
C++ 中的变量声明变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在 C+转载 2017-02-02 14:26:00 · 1234 阅读 · 0 评论 -
【C++】enum枚举类型
枚举类型枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。如果一个变量只有几种可能的值,可以定义为枚举(enumeration)类型。所谓"枚举"是指将变量的值一一列举出来,变量的值只能在列举出来的值的范围内。创建枚举,需要使用关键字 enum。枚举类型的一般形式为:enum enum-name { list of na转载 2017-02-02 14:21:47 · 479 阅读 · 0 评论 -
【C语言/入门/源代码】02
下面所有代码都是一些简单的算法问题,是博主刚刚学习C语言时学到的几个典型算法/*Hanoi塔问题:说明:河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑原创 2017-01-09 21:49:53 · 390 阅读 · 0 评论 -
【C++】goto语句
goto 语句允许把控制无条件转移到同一函数内的被标记的语句。注意:在任何编程语言中,都不建议使用 goto 语句。因为它使得程序的控制流难以跟踪,使程序难以理解和难以修改。任何使用 goto 语句的程序可以改写成不需要使用 goto 语句的写法。语法C++ 中 goto 语句的语法:goto label;...label: statement;在这里转载 2017-02-02 15:13:18 · 3611 阅读 · 0 评论 -
【C++】引用调用
向函数传递参数的引用调用方法,把参数的地址复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。按引用传递值,参数引用被传递给函数,就像传递其他值给函数一样。因此相应地,在下面的函数 swap() 中,您需要声明函数参数为引用类型,该函数用于交换参数所指向的两个整数变量的值。// 函数定义void swap(int &x, int &y转载 2017-02-02 15:20:12 · 551 阅读 · 1 评论 -
【C++】指针(2):NULL指针、指针的算术运算
C++ Null 指针在变量声明的时候,如果没有确切的地址可以赋值,为指针变量赋一个 NULL 值是一个良好的编程习惯。赋为 NULL 值的指针被称为空指针。NULL 指针是一个定义在标准库中的值为零的常量。请看下面的程序:#include using namespace std;int main (){ int *ptr = NULL; cout转载 2017-02-02 15:48:16 · 620 阅读 · 0 评论 -
【C++】指针(1):基本概念
C++ 指针学习 C++ 的指针既简单又有趣。通过指针,可以简化一些 C++ 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C++ 程序员,学习指针是很有必要的。正如您所知道的,每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址。请看下面的实例,它将输出定义的变量地址:转载 2017-02-02 15:46:56 · 513 阅读 · 0 评论 -
【C++】字符串
C++ 字符串C++ 提供了以下两种类型的字符串表示形式:C 风格字符串C++ 引入的 string 类类型C 风格字符串C 风格的字符串起源于 C 语言,并在 C++ 中继续得到支持。字符串实际上是使用 null 字符 '\0' 终止的一维字符数组。因此,一个以 null 结尾的字符串,包含了组成字符串的字符。下面的声明和初始化创建了一个转载 2017-02-02 15:44:55 · 603 阅读 · 0 评论 -
【C++】从函数返回数组
C++ 不允许返回一个完整的数组作为函数的参数。但是,您可以通过指定不带索引的数组名来返回一个指向数组的指针。如果您想要从函数返回一个一维数组,您必须声明一个返回指针的函数,如下:int *myFunction(){...}另外,C++ 不支持在函数外返回局部变量的地址,除非定义局部变量为 static 变量。现在,让我们来看下面的函数,它会生成转载 2017-02-02 15:41:12 · 1577 阅读 · 0 评论 -
【C++】setw()函数
原文来自:csdn/gukesdosetw(int n)只是对直接跟在field width for the next insertion operation.) n是在输出时分配了n个字符的输出宽度,然后默认的是在n个字符宽度中右对齐输出,可以使用setiosflags(iOS::left)设置为左对齐输出,可以使用setfill('char x')使用x来填充空下转载 2017-02-02 15:36:21 · 49353 阅读 · 1 评论 -
【C++】随机数
C++ 随机数在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用 srand() 函数。下面是一个关于生成随机数的简单实例。实例中使用了 time() 函数来获取系统时间的秒数,通过调用 rand() 函数来生成随机数:#include #include #include using转载 2017-02-02 15:25:38 · 260 阅读 · 0 评论 -
【C++】数学运算
C++ 数学运算在 C++ 中,除了可以创建各种函数,还包含了各种有用的函数供您使用。这些函数写在标准 C 和 C++ 库中,叫做内置函数。您可以在程序中引用这些函数。C++ 内置了丰富的数学函数,可对各种数字进行运算。下表列出了 C++ 中一些有用的内置的数学函数。为了利用这些函数,您需要引用数学头文件 。序号函数 & 描述1转载 2017-02-02 15:24:45 · 2828 阅读 · 0 评论 -
【C++】参数的默认值
参数的默认值当您定义一个函数,您可以为参数列表中后边的每一个参数指定默认值。当调用函数时,如果实际参数的值留空,则使用这个默认值。这是通过在函数定义中使用赋值运算符来为参数赋值的。调用函数时,如果未传递参数的值,则会使用默认值,如果指定了值,则会忽略默认值,使用传递的值。请看下面的实例:#include using namespace std; int sum(int a转载 2017-02-02 15:21:32 · 3524 阅读 · 0 评论 -
【C语言/入门/源代码】01
编译环境:Dev-C++ Version 5.1.1如有错误请指正作者:Grevi http://blog.csdn.net/grevi/* 求长方形(27,23)的面积和周长 */#include int main(void){ int a,b,len,area; a=23; b=27; len=2*(a+b); area=a*b; printf("len=%d\n",len原创 2017-01-09 21:44:43 · 623 阅读 · 0 评论