C++
文章平均质量分 64
lilykyung
这个作者很懒,什么都没留下…
展开
-
static(用于类成员)的作用详解
静态成员的提出是为了解决数据共享的问题。实现共享有许多方法,如:设置全局性的变量或对象是一种方法。但是,全局变量或对象是有局限性的。这一章里,我们主要讲述类的静态成员来实现数据的共享。使用static成员而不是全局对象有三个优点:1 static成员的名字在类的作用域中,因此可以避免与其他类的成员或全局对象名字冲突;2 可以实现封装,static成员可以是私有的,而全局对象则不可以;原创 2013-09-04 20:20:19 · 3872 阅读 · 0 评论 -
Chapter 8 标准IO库
输出缓冲区的处理导致缓冲区刷新的操作(即将缓冲区的内容写到真实的输出设备或者文件):1程序正常结束,return语句将清空所有缓冲区2缓冲区已满,将在写下一个值之前刷新3使用操纵符刷新,如endl、flush、ends等4每次输出完成后,用unitbuf的何止流的内部状态,清空缓冲区5将输入输出流关联(tie)起来,在读输入流时将刷新与其关联的输出缓原创 2013-09-04 20:12:32 · 758 阅读 · 0 评论 -
C++局部类作用域的说明
若局部类中包含typedef、枚举等,则在类外不能访问typedef定义的类型,也不能创建枚举变量,但可以通过对象访问枚举值:#include using namespace std;void foo(){ class Bar { public: enum test {one,two}; typedef i原创 2013-09-28 10:46:58 · 1226 阅读 · 0 评论 -
chapter 15 面向对象编程OOP
类的访问标号:private:类的成员函数或友元函数可以访问,派生类或普通函数不能访问;public:均可以访问;protected:成员、友元、派生类成员(非友元)均可以访问,其他函数不能访问。 注:1 派生类只能通过派生类对象访问其基类的protected成员,而对其基类类型对象的protected成员没有特殊访问权限。 2 用作基类的类必须使已定义的,只声明不定义不可原创 2013-09-04 20:21:58 · 560 阅读 · 0 评论 -
C++不能继承与实例化问题
如何使类不能被继承 如果大家熟悉java的话应该知道java中有一种类不能被继承,那就是final类.这种类有很多用处,尤其是在大 的项目中控制类的继承层次. 使子类数量不至于爆炸.在使用了多继承的类层次中这也是防止出现菱形继承层次结构的一个好办法. 要实现一个不能被继承的类有很多方法. 主要的思路就是使子类不能构造父类的部分,这样子类就没有办法实例化整个子类.这样就限制了子类的转载 2013-09-27 21:27:17 · 2078 阅读 · 0 评论 -
strcpy()和memcpy()函数的区别
均在头文件中;函数原型:char *strcpy(char *s1,char *s2) 和void *memcpy(void *dest,void *src,size_t n)memcpy和strcpy的却别在于:1.source和destin所指的内存区域可以重叠,但是如果source和destin所指的内存区域重叠,那么这个函数并不能够确保source所在重叠区域在拷贝之前被覆盖。原创 2013-09-27 20:30:00 · 926 阅读 · 0 评论 -
C++拷贝构造函数(深拷贝、浅拷贝)
对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=88;int b=a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include iostream>using namespace std;class CExample {private: int a;publ转载 2013-09-27 20:44:17 · 609 阅读 · 0 评论 -
C/C++中为什么在类外利用多态基类指向派生类指针可以调用类的私有成员函数?
看下面这个例子:class A{protected: A(){} ~A(){}public: virtual void print() { cout }};class B:public A{public: B(){} ~B(){}private: virtual void print() { cout }}转载 2013-09-28 11:42:09 · 1187 阅读 · 1 评论 -
计算机的取反(~)操作解释
我们都知道取反~是将二进制数0变为1,1变为0,但是原创 2014-04-10 22:29:20 · 12410 阅读 · 0 评论 -
chapter 10 关联容器(待续)
pair标准库类型:pair p1(v1,v2);对于pair类,可以直接访问其数据成员,其成员都是共有的,分别命名为first和second,p1.first就是元素v1;p1.second就是元素v2;pair定义在头文件utility中。三种顺序容器和两种关联容器分别适用的情况:list类型适用于需要在容器中间插入和删除元素的情况,如以无序方式读入一系列学生信息,并按学号存储;原创 2013-09-12 12:59:18 · 652 阅读 · 0 评论 -
chapter 9 顺序容器
顺序容器的初始化1 C c(c1);//c和c1类型必须匹配:容器类型和元素类型均相同2 C c(b,e);//初始化c为迭代器b和e范围内的副本,元素类型兼容即可3 C c(n,t);//初始化为n个t值,t与C的元素类型兼容即可,只适用于顺序容器4 C c(n);//只适用于顺序容器,T类型必须有默认构造函数或内置类型容器的容器:Vector > l原创 2013-09-04 20:14:51 · 654 阅读 · 0 评论 -
Chapter 7 函数
重载函数与重复声明重载函数是函数的一种特殊情况,为方便使用,C++允许在同一范围中声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同,也就是说用同一个运算符完成不同的运算功能。这就是重载函数。重载函数常用来实现功能类似而所处理的数据类型不同的问题。简之,重载函数可以定义为:在相同的声明域中的函数名相同的,而参数表不同的,即通过函数的参数表而唯一标识并且原创 2013-09-04 20:11:14 · 715 阅读 · 0 评论 -
static(用于修饰函数、局部变量、全局变量)的作用详解
static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容char a = 'A'; // global variablevoid m转载 2013-09-04 20:19:19 · 1138 阅读 · 0 评论 -
插入式智能指针
智能指针产生的目的:因为在C++中,存在非常复杂的指针错误问题,例如,某个对象生成后,指向该对象的指针可能有多个,当我们用delete语句删除其中的一个指针后,对象就被销毁,那么其余指向该对象的指针就会悬空,这样很容易出错内存误,为避免出现这样的问题,出现了智能指针,智能指针有2种构造方法,一种是插入式的还有一种是非插入式的,非插入式指针一般是直接采用裸指针作为参数进行创建,不需要修改现有的对象代原创 2013-09-04 20:24:45 · 923 阅读 · 0 评论 -
Chapter 12(part 1) 类
数据抽象与封装类的public成员实现类的抽象视图,而private成员实现了类的封装;在左花括号之后、第一个访问标号之前定义的成员:若类用struct定义,则是公有public;若用class定义,则这些成员是私有的private.不完全类型:只声明一个类而不定义。(class screen;)不完全类型的使用:不能定义该类型的对象,只能用于定义指向该类型的指针及原创 2013-09-04 20:14:57 · 791 阅读 · 0 评论 -
Chapter 4 C风格字符串与string对象
C风格字符串是string对象的字符数组形式,以null为结束符,c++通过const char*类型的指针来操纵C风格字符串。String类型和C风格字符串的库函数均不相同(参见书P114),相应的头文件分别为string和cstring。可以使用c风格字符串对string对象进行初始化或者赋值,反之则不可以;Eg: char* str=st2; //error无原创 2013-09-04 20:10:02 · 703 阅读 · 0 评论 -
C++初始杂记
1 动态分配数组初始化:string *ps=new string[10];//类类型,默认构造函数初始化int *pi=new int[10]();//()用于初始化对于动态分配数组,其元素只能初始化为元素类型默认值。C++允许定义0长度的动态分配数组,即:char *cp=new char[0]; //ok,返回有效的非零指针,但不能解引用2原创 2013-09-04 20:10:10 · 801 阅读 · 0 评论 -
chapter 14 重载操作符
重载操作符就是让操作符作用域非内置类型时也有自己独特的意义。对于内置类型,当操作符作用于它们时,编译器会规定操作的意义:两个int型数据相加的结果与数学运算的加法相同。但是对于非内置类型,比如类或者枚举类型,编译器并没有规定操作符作用于它们的意义。有些时候,这样做是合理的,比如对于两个Student类对象(其中的数据成员有姓名、学号),对它们进行加法操作的确没有什么意义;但是有的时候,我们却希转载 2013-09-04 20:21:33 · 844 阅读 · 0 评论 -
chapter 12(additional) 类的私有成员输出
eg:class sales_item {public: sales_item():units_sold(0),revenue(0.0) {} //其他函数。。。private: string isbn; unsigned units_sold; int revenue;}若想在屏幕上显示该类中的私有成员,直接在类外使用co原创 2013-09-04 20:18:17 · 1224 阅读 · 0 评论 -
chapter 12(part 2) 友元函数
友元函数:被指定为某类的友元的函数成为该类的友元;友元类:被指定为某类的友元的类称为授予友元关系的那个类的友元类。 注:友元函数不是类的成员函数。 1、为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护变量,而同时阻止一般的访问的情况下原创 2013-09-04 20:17:44 · 841 阅读 · 0 评论 -
C++内存管理
计算机中的内存在用于编程时,被人为的进行了分区(Segment),分为:“栈区”(Stack)、“堆区”(Heap)、全局区(静态区,Static)、文字常量区和程序代码区。在前面的课程中,我们主要直接涉及到的是栈区的内存,在你的程序中,函数的参数值,局部变量的值等都被存在了“栈区”,这部分的内存,是由系统来来帮助你来管理的,没有特殊情况的时候,你是不需要对其进行特别处理的。而转载 2014-04-11 19:28:40 · 836 阅读 · 0 评论