C++入门
文章平均质量分 63
JessicaZhang27
共同学习,共同进步
展开
-
C++入门(2):操作符和控制结构
C++入门(2):操作符和控制结构如果想查看某给定变量的内存占用量,最好使用不带括号的sizeof操作符int a = 2,c;float b = 2.0,d;std::cout << sizeof(int) << sizeof a; //结果为 4 4c = a++; //先赋值,再自加d = ++b; //先自加,再赋值std::cout << c原创 2015-12-11 19:16:02 · 313 阅读 · 2 评论 -
C++入门(10):高级OOP技术:静态方法和属性
C++入门(10):高级OOP技术:静态方法和属性创建一个静态方法或静态属性,只要在它的声明前加上 static 保留字即可。静态属性是在同一个类的所有实例之间共享的,不属于某个特定的对象; 在声明了静态属性之后,还需要为它分配一块用来存储有关数据的内存(很重要!!):就像创建变量一样,只要在类声明的外部写出静态属性的类型和名字就可以了,比如:int Pet::count无需创建对象就可以访问类的原创 2016-01-08 11:15:12 · 519 阅读 · 1 评论 -
C++入门(1)简单变量和数据类型
C++入门(1)简单变量和数据类型最近在看Larry Ullman && Andreas Signer 写的《写给大家看的C++书》,做了一些笔记跟大家分享,希望会有所帮助。输入输出头文件#include <iostream>输出格式化数值int i = 2; //分号是语句结束的标志float j = 6.346;std::cout.precision(3原创 2015-12-06 16:21:30 · 1050 阅读 · 2 评论 -
C++入门(11):高级OOP技术:虚方法和抽象方法
C++入门(11):高级OOP技术:虚方法和抽象方法直接创建一个指针并让它指向新分配的内存块:type *pointName = new type;,一定要记着释放刚才分配的那个内存块:delete pointName;,否则会造成内存泄露。虚方法 为了让编译器知道它应该根据指针在运行时的类型而有选择地调用正确的方法,就必须把这些方法声明为虚方法; 声明一个虚方法只要在其原型的前面加上 virt原创 2016-01-08 22:58:26 · 537 阅读 · 2 评论 -
C++入门(12):高级OOP技术:重载操作符、多继承和虚继承
C++入门(12):高级OOP技术:重载操作符、多继承和虚继承重载操作符 如果要重载某个操作符(比如加号+),只需创建一个名为 operator+ 的方法即可:type operate+(Mytype rhs);多继承 多继承基本语法:以逗号作为分隔符把打算继承的类(包括它们的访问控制限定符)全部列出来即可,比如:class TeachingStudent:public Student,publ原创 2016-01-09 21:01:42 · 692 阅读 · 1 评论 -
C++入门(13):错误处理和调试
C++入门(13):错误处理和调试C++中错误分为:编译时错误和运行时错误; 错误处理和调试方法: 1)让函数返回错误代码; 2)使用assert() 函数:assert() 函数需要一个输入参数,它将测试这个输入参数的真/假状态。如果条件为真,什么事情都不会发生;如果条件为假,程序将停止执行并报告一个错误 Assertion failed!。 3)捕获异常;其基本语法为: try{原创 2016-01-10 14:16:29 · 559 阅读 · 3 评论 -
C++入门(4):文件读写
C++入门(4):文件读写对文件进行读写要包含下面的头文件: #include <fstream> ofstream: 输出文件流,文件名可以是绝对路径名或相对路径名 ifstream: 输入文件流std::ofstream fileOutput0(".\\fileTest\\file0.txt"); //将fileOutput0变量与一个特定的文件关联在一起if(fileOutput原创 2015-12-26 16:47:02 · 518 阅读 · 1 评论 -
C++入门(14):动态内存管理
C++入门(14):动态内存管理动态内存管理 动态内存只受限于计算机里的硬件内存总量。 从内存池申请一些内存使用 new 语句,new 语句返回新分配地址块的起始地址,如果没有足够的可用空间,new 语句将抛出std::bad_alloc异常; 使用完内存块之后,应该用 delete 语句把它还给内存池; 用 delete 语句把内存块“重置”为未分配状态,但那个指针占用的空间仍保留着,所以原创 2016-01-11 17:45:40 · 456 阅读 · 4 评论 -
C++入门(15):从函数或方法返回内存:工厂函数
C++入门(15):从函数或方法返回内存:工厂函数从函数或方法返回内存 一旦需要根据某种条件创建不同类型的对象,就应该使用工厂函数(方法); 工厂函数(或方法)最适合用在需要根据一些存档数据(例如一个文件)来创建不同类型的对象的场合。任何一个函数都不应该把它自己的局部变量的指针作为它的返回值;如果想让一个函数在不会留下任何隐患的情况下返回一个指针,那它只能是一个动态分配的内存块的基地址。 总之原创 2016-01-12 17:23:22 · 1266 阅读 · 3 评论 -
C++入门(16):副本构造器和赋值操作符、强制类型转换
C++入门(16):副本构造器和赋值操作符、强制类型转换副本构造器和赋值操作符 副本构造器形式为:MyClass(const MyClass &rhs); ,没有返回类型。 赋值操作符形式为:MyClass &operator=(const MyClass &rhs); 只要声明了一个有指针属性并将在析构器里释放那块内存的类,就需要实现一个副本构造器和一个赋值操作符,两者缺一不可。 一定要保原创 2016-01-14 13:50:11 · 535 阅读 · 1 评论 -
C++入门(9):类的继承(2)
C++入门(9):类的继承(2)构造器越简明越好,最好只用它来初始化各有关属性。 访问控制通过访问级别实现: 1)public : 任何代码都可以访问; 2)protected : 这个类本身和它的子类可以访问; 3)private : 只有这个类本身可以访问;对函数/方法进行重载一定要慎重,重载方法/函数越多,程序就越不容易看懂; 覆盖方法: 在对方法进行覆盖(注意不是重载)时一定要认原创 2016-01-06 13:35:40 · 434 阅读 · 2 评论 -
CPP入门(3):输入、输出
CPP入门(3):输入、输出获得字符串输入int length;std::string name,name1,name2;std::cout << "Enter your name: ";std::cin >> name; //cin使用空白字符作为输入字符串的结束标志length = name.size(); //返回某给定字符串里的字符原创 2015-12-20 15:23:53 · 1533 阅读 · 2 评论 -
C++入门(5):定义个人函数
C++入门(5):定义个人函数函数定义 函数原型通常安排在main()函数的定义之前; 定义函数时,可以给输入参数设置默认值,让这个参数成为可选的,但有一点必须注意:必须把所有的必选参数放在可选参数之前!!内联函数 创建内联函数最直接的办法是使用 inline 关键字并在 main() 函数的前面定义它,所以内联函数不需要先为它定义原型; 某个函数被编译器当做内联函数来处理最直接的效果是:这原创 2015-12-28 15:07:41 · 589 阅读 · 3 评论 -
C++入门(17):命名空间和模块化
C++入门(17):命名空间和模块化命名空间和模块化 系统级头文件作用:保证C++代码的可移植性; 头文件基本用途:提供必要的函数声明、 用户自定义数据类型(结构和类)、模板和全局性的常量。C预处理器:以 # 开头,不允许以分号结尾。 预处理的条件指令:#if #else #elif #endif #ifdef #ifndef 比如:#ifndef MYCLASS_H原创 2016-01-16 10:23:48 · 575 阅读 · 1 评论 -
C++入门(6):复杂的数据类型
C++入门(6):复杂的数据类型内存中,变量类型是根据它们的自然边界进行对齐的;比如,int的起始地址必须是sizeof(int)的整数倍。 std::string s = "asdfgh" ; std::cout << reinterpret_cast<unsigned long>(&s) << std::endl;原创 2015-12-30 16:17:04 · 506 阅读 · 1 评论 -
C++入门(18):模板
C++入门(18):模板模板( template )、 STL(标准模板库) 在泛型编程技术里,仍需要编写自己的函数和类,但不必限定它们所使用的数据类型(int、double 或 myClass); 只需使用一个占位符(通常用字母T表示),然后用这个占位符来编写函数 。 模板的基本语法,只要把 template <type> 这行代码放在函数或类的前面就可以定义出一个模板;比如:templat原创 2016-01-17 17:34:33 · 487 阅读 · 3 评论 -
C++入门(19):向量与迭代器
C++入门(19):向量与迭代器容器 容器一般通过模板来实现,即容器一般为模板的实例化。向量容器(头文件 #include <vector>) 如果想创建特定类型的向量,需要使用的语法为:std::vector<type> vectorName; 比如,std::vector<std::string> names;即定义了一个字符串向量。1) 向量可以动态地随着你往它里面添加元素而无限增大——只原创 2016-01-18 09:51:52 · 2498 阅读 · 1 评论 -
C++入门(7):对象
C++入门(7):对象类 = 属性 + 方法; 类名的第一个字母一般采用大写,类声明的末尾必须加上分号“;”;C++允许在类里声明常量,但不允许对它赋值,除非创建一个静态常量。构造器 1)构造器的名字和它所在类的名字一样; 2)系统会在创建出某个新实例之后,立刻自动调用这个类的构造器; 3)构造器永远不返回任何值。 如果没有在类里定义一个构造器,编译器会自动创建一个,形式为:ClassNa原创 2016-01-01 12:41:46 · 396 阅读 · 2 评论 -
C++入门(20):字符串
C++入门(20):字符串字符串 提取子字符串 substr() :返回当前字符串的一部分。常见的有两个输入参数的重载函数为:第一个参数表明从哪个位置开始提取子字符串,是一个从0开始的整数值;第二个参数是子字符串的长度。 比较字符串 compare() ; 如果字符串里什么也没有(一个空字符串),empty()函数将返回true值 。添加字符串 字符串拼接 + :可以用来把一些新文本追加到原创 2016-01-19 09:58:17 · 584 阅读 · 2 评论 -
C++入门(8):类的继承(1)
C++入门(8):类的继承(1)通过继承机制,可以对现有的、可信的代码进行扩展,并应用在新的程序中。 子类是从基类(父类或超类)派生出的类,形式为: class SubClass:public(protected、private) SuperClass{...}对象之间的关系: 1)继承:比如说“狗是一个宠物”,则可以创建一个名为 Pet(宠物)的基类,再由它派生出一个名为 Dog(狗)的子类原创 2016-01-04 15:16:58 · 496 阅读 · 2 评论 -
C++入门(21):二进制文件、C风格字符串
C++入门(21):二进制文件、C风格字符串二进制文件 可以通过写入二进制数据的办法来存储各种复杂的数据类型; 把数据写入二进制文件,其调用语法为: std::ofstream fileOutput("filename",std::ios::binary);如果想把新数据追加到现有数据后面,需要加上 std::ios.app,即 std::ofstream fileOutput("filen原创 2016-01-21 10:44:51 · 724 阅读 · 1 评论 -
C++编译期多态与运行期多态
今日的C++不再是个单纯的“带类的C”语言,它已经发展成为一个多种次语言所组成的语言集合,其中泛型编程与基于它的STL是C++发展中最为出彩的那部分。在面向对象C++编程中,多态是OO三大特性之一,这种多态称为运行期多态,也称为动态多态;在泛型编程中,多态基于template(模板)的具现化与函数的重载解析,这种多态在编译期进行,因此称为编译期多态或静态多态。转载 2016-03-14 22:06:30 · 578 阅读 · 1 评论