随笔分类 -  C/C++

摘要:本人在看《C++ Primer(第三版)》中文版看到类一章时,遇到了“有序型”这个概念。(Page527)原文摘录如下:作为特例,有序型的const静态数据成员可以在类体中用一常量值初始化。例如,如果决定用一个字符数组而不是string来存储账户的姓名,那么我们可以用int型的const数据成员指定数组的长度。例如://头文件 class Account{ //... private: static const int namesize = 16; static const char name[namesize]; }; //文本文件 const int Account::namesi... 阅读全文

posted @ 2011-11-10 11:30 江南烟雨hust 阅读(266) 评论(0) 推荐(0)

摘要:静态类成员包括静态数据成员和静态函数成员两部分。 一、 静态数据成员: 类体中的数据成员的声明前加上static关键字,该数据成员就成为了该类的静态数据成员。和其他数据成员一样,静态数据成员也遵守public/protected/private访问规则。同时,静态数据成员还具有以下特点: 1.静态数据成员的定义。 静态数据成员实际上是类域中的全局变量。所以,静态数据成员的定义(初始化)不应该被放在头文件中。 其定义方式与全局变量相同。举例如下: xxx.h文件 :class base{ private: static const int ... 阅读全文

posted @ 2011-11-10 10:51 江南烟雨hust 阅读(300) 评论(0) 推荐(0)

摘要:代码一:class Point{ public: void output() { } static void init() { } }; int main() { Point pt; pt.init(); pt.output(); }代码二:class Point{ public: void output() { } static void init() { } }; int main() { Point::init(); Point::output();//报错 }两个代码编译运行,代码一成功,代码二报错。错误信息:test1.cpp(16) : error... 阅读全文

posted @ 2011-10-10 19:09 江南烟雨hust 阅读(1140) 评论(0) 推荐(0)

摘要:1. C语言动态分配二维数组(1)已知第二维char (*a)[N];//指向数组的指针 a = (char (*)[N])malloc(sizeof(char *) * m); printf("%d\n", sizeof(a));//4,指针 printf("%d\n", sizeof(a[0]));//N,一维数组 free(a);(2)已知第一维char* a[M];//指针的数组 int i; for(i=0; i<M; i++) a[i] = (char *)malloc(sizeof(char) * n); printf("% 阅读全文

posted @ 2011-09-27 20:52 江南烟雨hust 阅读(728) 评论(0) 推荐(0)

摘要:在C++中,可以为两个或多个函数提供相同的名字,只要它们的每个参数表唯一就行:或者是参数的个数不同,或者是参数类型不同。当一个函数名在一个特殊的域中被声明多次时,编译器按如下步骤解释后续的声明。(1)如果两个函数的参数表中的参数的个数或类型不同,则认为是重载的。例如:void print(const string&); void print(vector<int> &);(2)如果两个函数的返回类型和参数表精确匹配,则第二个声明被视为第一个的重复声明。void print(const string &str); void print(const string 阅读全文

posted @ 2011-09-05 21:34 江南烟雨hust 阅读(460) 评论(0) 推荐(0)

摘要:先简单介绍一下命令行编译C++程序的方法。编写如下代码,输出参数的个数和各个参数:#include<stdio.h> #include<stdlib.h> int main(int argc,char* argv[]) { printf("argc:%d\n",argc); for(int i = 0;i < argc; ++i) printf("%s\n",argv[i]); system("pause"); } 代码中,argc包括命令行选项的个数,argv包含argc个C风格字符串,代表了由空格分隔 阅读全文

posted @ 2011-08-24 18:37 江南烟雨hust 阅读(1666) 评论(0) 推荐(0)

摘要:引用和指针参数,这两种参数都允许函数修改实参,也都允许有效地向函数传递大型类对象。那么,怎么样决定把函数参数声明成引用还是指针呢?引用必须被初始化为指向一个对象,而且一旦初始化了,就不能指向其他对象。而指针可以指向一系列不同的对象也可以什么都不指向。因为指针可能指向一个对象或者没有任何对象,所以函数在确定指针实际指向一个有效地对象之前不能安全地解引用一个指针。例如:class X; void manip(X *px){ //在解引用之前确定它非0 if(px != 0) //解引用指针 }另一方面,对于引用参数,函数不需要保证它指向一个对象。例如:class Type{}; void ... 阅读全文

posted @ 2011-08-23 08:48 江南烟雨hust 阅读(1030) 评论(0) 推荐(0)

摘要:通过我这些天用C++读写bmp图像的经历,摸索再摸索,终于对bmp文件的结构、操作有了一定的了解,下面就大概介绍bmp图片纯C++的读取、旋转和保存的实现过程。要用C++读取bmp图片文件,首先要弄清楚bmp格式图片文件的结构。可以参考这篇文章:http://blog.csdn.net/xiajun07061225/article/details/5813726有几点需要注意的是:在读取bmp图片的时候,一定要注意内存对齐的问题,譬如文件头,否则无法读取出正确结果。关于图片的像素数据,每一行的像素的字节数必须是4的整数倍。如果不是,则需要补齐。一般来说,bmp图像文件的数据是从下到上,从左到右 阅读全文

posted @ 2011-07-26 10:15 江南烟雨hust 阅读(2527) 评论(0) 推荐(0)

摘要:在VS里面写如下代码,实现两个数的相加并且显示结果: int num1,num2,num3; char ch1[10],ch2[10],ch3[10]; GetDlgItem(IDC_EDIT1)->GetWindowText(ch1,10); GetDlgItem(IDC_EDIT2)->GetWindowText(ch2,10); num1=atoi(ch1); num2=atoi(ch2); num3=num1+num2; itoa(num3,ch3,10); GetDlgItem(IDC_EDIT3)->SetWindowText(... 阅读全文

posted @ 2011-07-21 09:28 江南烟雨hust 阅读(1438) 评论(0) 推荐(1)

摘要:【1】(page38)重载构成的条件:函数的参数类型、参数个数不同。分析以下2种情况:第一种:1、void output();2、int output();第二种:1、void output(int a,int b=5);2、void output(int a);对于第一种情况,只有函数的返回类型不同是不能构成重载的。对于第二种情况,当我们在程序中调用output(5)时,应该调用哪个函数呢?调用1当然是可以的。因为1的函数第二个参数有一个默认值。当然也可以调用第二个函数。有与调用有歧义,因此这种情况不能构成重载函数。在函数重载时,要特别注意函数带有默认参数的情况。【2】(Page226)创建 阅读全文

posted @ 2011-07-15 10:56 江南烟雨hust 阅读(357) 评论(0) 推荐(1)

摘要:【1】(Page171)switch-case问题对于switch-case,普遍的误解是:只有与被匹配的case标签相关联的语句才被执行。实际上,程序从该点开始执行并继续越过case边界直到switch语句结束。例如,下面记录元音字母个数的switch程序的实现就是不正确的:#include "stdafx.h" #include <iostream> #include "stdlib.h" using namespace std; int main(){ cout<<"请输入字符串:"<<end 阅读全文

posted @ 2011-07-12 15:42 江南烟雨hust 阅读(193) 评论(0) 推荐(0)

摘要:【1】(Page94)代码:int staff_size=27;//错误:非const变量double salaries[staff_size];但是编译器并不报错?这是为什么?解答:用Dev C++编译能通过,但是用VS2008便报错,看来编译器很关键啊~~~~【2】(Page104)typedef char *cstring;extern const cstring cstr;请问,cstr的类型是什么?解答:cstr是指向字符的const指针。cstring是指针类型,指向char。const修饰cstring,就是修饰指针。【3】(Page133)代码://一个string的大小与它所 阅读全文

posted @ 2011-07-10 20:57 江南烟雨hust 阅读(274) 评论(0) 推荐(0)

摘要:【导读】介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面、透彻地阐述 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。引用简介引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名说明:(1)&在此不是求地址运算,而是起标识作用。(2)类型标识符是指目标变量的类型。(3)声明引用时,必须同时对其进行初始化。(4)引用声明完毕后,相当于目标变 阅读全文

posted @ 2011-07-05 21:27 江南烟雨hust 阅读(198) 评论(0) 推荐(1)

导航