随笔分类 -  C++

摘要:转自:http://hi.baidu.com/edfa/blog/item/ae64ea133663f7075aaf53a3.html 参考文献: [1]C++程序设计语言(特别版), 裘宗燕译, 机械工业出版社 [2]C++ Primer (3rd Ed.), S.B. Lippman and J. Lajoie, 人民邮电出版社 1、枚举enum的用途浅例 写程序时,我们常常需要为某个对象关... 阅读全文
posted @ 2011-05-26 10:33 hnrainll 阅读(431) 评论(0) 推荐(0) 编辑
摘要:this指针的含义及其用法:1. this指针是一个隐含于每一个成员函数中的特殊指针。它指向正在被该成员函数操作的那个对象。2. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。3. 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。 4. 在C++中,this指针被隐含地声明为: X *const this,这意味着不能给this 指针赋值; 在X类的const成员函数中,this指针的类型为:const X* const, 这说明this指针所指向的这种 阅读全文
posted @ 2011-05-20 14:03 hnrainll 阅读(27632) 评论(1) 推荐(2) 编辑
摘要:派生类的数据成员由所有基类的数据成员与派生类新增的数据成员共同组成,如果派生类新增成员中包括其他类的对象(子对象),派生类的数据成员中实际上还间接包括了这些对象的数据成员。因此,构造派生类的对象时,必须对基类数据成员、新增数据成员和成员对象的数据成员进行初始化。派生类的构造函数必须要以合适的初值作为参数,隐含调用基类和新增对象成员的构造函数,来初始化它们各自的数据成员,然后再加入新的语句对新增普通数据成员进行初始化。 派生类构造函数的一般格式如下: <派生类名>::<派生类名>(<参数表>) : <基类名1>(<参数表1>), ……, 阅读全文
posted @ 2011-05-20 13:18 hnrainll 阅读(1028) 评论(0) 推荐(1) 编辑
摘要:◆由于构造函数不能被继承,因此,派生类的构造函数中除了对派生类中数据成员进行初始化外,还必须通过调用直接基类的构造函数来对基类中数据成员初始化,一般地将,对派生类中数据成员初始化放在该派生类构造函数的函数体内,而调用基类构造函数的基类中数据成员初始化放在该构造函数的成员初始化表中。派生类构造函数的格式如下表示:<派生类构造函数名>(<参数表>):<成员初始化表>{<派生类构造函数的函数体>}其中,<派生类构造函数名>同该派生类的类名。<成员初始化表>中包含如下的初始化项:①基类的构造函数,用来给基类中数据成员初始化;②子对 阅读全文
posted @ 2011-05-20 12:18 hnrainll 阅读(2859) 评论(0) 推荐(0) 编辑
摘要://动态联编和虚函数的简单应用#include <iostream>using namespace std;class Base{public:#if 1 //if 1则fun()为虚函数virtual #endifvoid fun()//成员函数 { cout<<"in base class"<<endl; }};//继承于基类的子类class subClass:public Base{public: void fun()//和基类中的fun函数形参,返回类型都一样 { cout<<"in Subclass&quo 阅读全文
posted @ 2011-05-20 08:52 hnrainll 阅读(326) 评论(0) 推荐(0) 编辑
摘要:Nand Flash如果出现坏块,可以使用vivi的bon工具格式化Nand Flash分区 FriendlyARM>part show mtdpart info. (4 partitions) nameoffsetsizeflag ------------------------------------------------ vivi: 0x000000000x00020000 0 128k param : 0x000200000x00010000 0 64k kernel: 0x000300000x00200000 02M root: 0x002300000x03dd0000 0 阅读全文
posted @ 2011-05-18 21:39 hnrainll 阅读(579) 评论(0) 推荐(0) 编辑
摘要:#include <iostream>#include <cstring>using namespace std;class boy;//向前引用class girl{//声明类1private: char name[25]; int age;public: void init(char N[],int A);//声明成员函数 friend void prdata(const girl plg,const boy plb);//友元函数};void girl::init(char N[],int A)//实现成员函数{ strcpy(name,N); age = A;} 阅读全文
posted @ 2011-05-18 16:33 hnrainll 阅读(324) 评论(0) 推荐(0) 编辑
摘要:#include <iostream>#include <cstring>using namespace std;class NameString{//声明类namestringprivate: char *str;public: //声明构造函数,不能有返回类型 NameString(char *s="...") { str = new char[strlen(s)+1]; strcpy(str,s);// cout<<"构造 NameString OK!"<<endl; } //声明成员函数 void 阅读全文
posted @ 2011-05-18 16:11 hnrainll 阅读(370) 评论(0) 推荐(0) 编辑
摘要:#include <iostream>using namespace std;class tr{ private: int i; public: tr(int n) { i = n; } void set(int n) { i = n; } int get() { return i; }};//以引用方式传递#if 1void sqr(tr &ob){ ob.set(ob.get()*ob.get()); cout<<"ob.i="<<ob.get()<<endl;}#endif//以值方式传递#if 0void sq 阅读全文
posted @ 2011-05-18 14:40 hnrainll 阅读(471) 评论(0) 推荐(0) 编辑
摘要:版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://lihuan-dianxian.blogbus.com/logs/42102230.html同学拿了个很简单的小程序过来问我,重载了个运算符,如果作为成员函数,一点问题没有;如果作为友元函数重载,就会出现下面的编译出错提示:-------------------Configuration: money - Win32 Debug--------------------Compiling...money.cppF:\c++workspaces\money\money.cpp(12) : fatal error C100 阅读全文
posted @ 2011-05-18 14:19 hnrainll 阅读(7261) 评论(0) 推荐(0) 编辑
摘要:#include <iostream>#include <cstring>using namespace std;class NameString{private: char *str;public: NameString(char *s="...") { str = new char[strlen(s)+1]; strcpy(str,s);// cout<<"构造 NameString OK!"<<endl; } void print() { cout<<str; } ~NameString( 阅读全文
posted @ 2011-05-17 19:17 hnrainll 阅读(223) 评论(0) 推荐(0) 编辑
摘要://对象作为类的数据成员#include <iostream>#include <cstring>using namespace std;class stringa{ //声明一个类private: char *str;public: stringa(char *s ="...")//构造函数,默认初始化 { str=new char[strlen(s)+1]; strcpy(str,s); cout<<"构造string\n"; } void print()//成员函数 { cout<<str<&l 阅读全文
posted @ 2011-05-17 17:00 hnrainll 阅读(675) 评论(0) 推荐(0) 编辑
摘要:转自:http://www.vckbase.com/document/viewdoc/?id=584在使用C++编程的过程当中,常常需要对类成员进行初始化,通常的方法有两种:第一种方法: CMYClass::CSomeClass(){ x=0; y=1;}第二种方法:CSomeClass::CSomeClass() : x(0), y(1){}本文将要探讨这两种方法的异同以及如何使用这两种方法。 从技术上说,第二种方法比较好,但是在大多数情况下,两者实际上没有什么区别。第二种语法被称为成员初始化列表,之所以要使用这种语法有两个原因:一个原因是必须这么做,另一个原因是出于效率考虑。 让我们先看一 阅读全文
posted @ 2011-05-17 16:47 hnrainll 阅读(665) 评论(0) 推荐(0) 编辑
摘要:1当用类的一个对象初始化该类的另一个对象时.例如:C/C++ code int main(){ point A(1,2); point B(A);//用对象A初始化对象B,拷贝构造函数被调用.}2 如果函数的形参是类的对象,调用函数时,进行形参和实参结合时. C/C++ code void f(point p){}main(){ point A(1,2); f(A);//函数的形参为类的对象时,当调用函数时,拷贝构造函数被调用.}3 如果函数的返回值是类的对象,函数执行完成返回调用者时. C/C++ code point g(){ point A(1,2); return A;//函数的返回值 阅读全文
posted @ 2011-05-17 10:58 hnrainll 阅读(17721) 评论(0) 推荐(4) 编辑
摘要:转载自http://hi.baidu.com/xiaomeng008/blog/item/9b7706b0e39d785e08230226.html动态内存分配1.堆内存分配 :C/C++定义了4个内存区间:代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store)。堆的概念:通常定义变量(或对象),编译器在编译时都可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。这种内存分配称为静态存储分配;有些操作对象只在程序运行时才能确定,这样编译时就无法为他们预定存储空间,只能在程序运行时,系统根 阅读全文
posted @ 2011-05-17 10:12 hnrainll 阅读(8166) 评论(0) 推荐(0) 编辑
摘要:#include <iostream>#include <string>using namespace std;class myclass1{public: char name[10]; int no; myclass1(char *s,int n= 90) { cout<<"in myclass1 ===="<<s<<endl; strcpy(name,s); no = n; } myclass1() { char s[] = "sss"; cout<<"in mycla 阅读全文
posted @ 2011-05-16 17:43 hnrainll 阅读(289) 评论(0) 推荐(0) 编辑
摘要://#include <stdafx.h>#include <cstdlib>#include <iostream>using namespace std;namespace anamespace{ int x; void SetX(int xvalue) { x = xvalue; cout<<x<<endl; }};namespace anothernamespace{ int x; void SetX(int xvalue) { x = xvalue; cout<<x<<endl; }};int main 阅读全文
posted @ 2011-05-16 17:12 hnrainll 阅读(429) 评论(0) 推荐(0) 编辑
摘要://函数返回值为引用#include <iostream.h>int a[]={1,3,5,7,9};int &index(int); //声明返回引用的函数void main(){ cout<<index(2)<<endl; index(2)=25; //a[2] = 25; cout<<index(2)<<endl;}//引用就是变量的别名,这里是返回一个别名,一个变量的别名int &index(int i){ return a[i]; }//引用举例#include <iostream>using n 阅读全文
posted @ 2011-05-16 14:59 hnrainll 阅读(331) 评论(0) 推荐(0) 编辑
摘要:面向对象的思想:封装,继承,多态性.1.作用域运算符"::"作用域:变量在程序中的起作用范围简单分为:全局作用域,局部作用域,语句作用域作用域优先级:范围越小优先级越高作用域运算符:"::" 如果希望在局部变量的作用域内使用同名的全局变量,可以在该变量前加上"::","::"称为作用域运算符.//作用域#include <iostream>using namespace std;int avar=10; //全局变量avarint main(){ int avar=20; //局部变量avar cout 阅读全文
posted @ 2011-05-16 13:11 hnrainll 阅读(388) 评论(0) 推荐(0) 编辑
摘要:转自:http://blog.csdn.net/cytbox/archive/2005/01/18/258591.aspx“从程序员的角度来看,STL是有一些可适应不同需求的群集类别(collection classes),和一些能够在这些数据群集上运行的算法构成。”“当然,如此灵活性并非免费午餐,代价总是有的。首要的一点是,STL并不好懂。”(这是一场持久仗啊)“若干精心勾画的组件共同合作,构筑起STL的基础。这些组件中最关键的是容器、迭代器和算法。”“容器 Container,用来管理某类对象的集合。”“迭代器Iterators,用来在一个对象群集的元素上进心遍历动作。”“算法 Algor 阅读全文
posted @ 2011-05-16 08:34 hnrainll 阅读(753) 评论(0) 推荐(0) 编辑