C++学习宝典(笔记)(7)

2019-07-13 16:41

cout<

struct Date{ int year; int month; int day; };

void show(Date a[],int n) {

for(int i=0;i

cout<

void show(Date a[],int n,int Date::*p) {

for(int i=0;i

cout<

void sort(Date a[],int n,int Date::*p) {

for(int i=0;i

if((a[i].*p)>(a[j].*p)) swap(a[i],a[j]); } }

int main() {

Date a[4]={{2010,4,5},{2008,8,8},{2010,12,24},{2000,10,10}}; show(a,4,&Date::year); show(a,4,&Date::day);

sort(a,4,&Date::day);//按指定的成员day来排序 show(a,4); }

void *malloc(size_t size);//内存分配 void *realloc();//重新分配内存

void *calloc(size_t nmemb,size );//把新分配的内存块用填满;

利用数组进行冒泡排序!!!!

冒泡排序:8 9 5 4 2 0 第一趟: 8 9 5 9

4 9

2 9

0 9-------------------(5次)

第二趟: 8 5 4 2 0 5 8 4 8

2 8

0 8------------------------(4次)

第三趟: 5 4 2 0 4 5

2 5

0 5------------------------------(3次)

第四趟: 4 2 0 2 4

0 4-------------------------------------(2次)

第五趟: 2 0

0 2-------------------------------------------(1次)

总结: N个数比较N-1趟 第i趟比较N-i次

思想:每一趟都是相邻两个数比较,小数在前面,大数在后面,如不是就交换,比较一趟之后可以得到一个最大的数在最下面

*********************2010年09月16日 星期四 09时19分09秒 (第九天)**********************************

C++:一个函数,也可以做为结构变量中的一个成员 struct Student()

{

int num;//学号 string name;

Student* friend1;

void init(int num,string name)//函数做员 {

Student::num=num;//可用域操作符解决重名问题,当然可以把形参取不同的名,不过也可以不用,因为局部优先 Student::name=name; }

Ratio(){cout<<\ };

在主函数中:

stu.init(11,\

在创建变量时,系统会默认调用一个和Studnet同名的函数Studnet()。这个函数无返因类形,称为构造函数。所以不必自已写一个初始化函数,直接把初始化变量成员的语句放在,构造函数中。(初始化可以防止出现垃圾数据)

this:表示用来调这个成员函数变量的地址,如stu.init()那么this就是&stu; 如在stu.init(){函数中可以stu1.friend1=this;}

类:class与结构体有以下最大的不同

类中所有成员默认,只允许自已的成员函数访问不允许外部访问,除非声明 访问权限

private:私有的 public:公开的

Object:对象,就是类的具体实例。 OO面象对象

抽象abs:是封装的前提] 封装之后,可以保护数据

描述对象的类象,创建对象,使用对象

Point p1,p2(7,9);//在定义对象的同时,系统自动调用了带参的构造函数,完成了初始化。 Point p1();//错误,因为会认这是一个函数声明;

一个对象可以没有名字,称为匿名对象, 如Point (7,9);只能当场使作如return Point(9,9); 如 f().print(); Point f()

{

return Point(9,9); }

如果直接Point(9,9),

构造函数:destructor

析构函数:一个函数在结束的时候,编译器也会自动调用一个函数,称为析构函数

作业:

写一个随机数类,提供一个有两个参数的构造函数指定随机数的范围,成员函数int Rand()用来每次调用取得一个指定范围围的随机数。 .rand()//就可以产

2,写一个时钟类,提供一个构造函数。,把时间初如化成0点0分0秒。成员函数set(int h,int m,int s)来设置时钟的时间,无参的函数run让时中走起来 怎么样时间过一秒

反复掉用long t=time(NUll); while((time(NULL)!=t),如取到的时间跟一次时间不同了,意味着时间过去了一秒。

*********************2010年09月17日 星期五 09时19分43秒 (第十天)********************************** 类的四大特征:封装,继承,多态,抽象

类: 数据一般私有, 行为一般公有。 构造 函数:创建 对象时,先分配空间,再调构造函数。 析构函数:对象释放时,先调用析构,现恢复空间 对象.成员

this.成员//this指向当前对象 类名::成员

引用&:双方共用同一块空间

对成员变量初始化:可以在构造函数中写初始化列表 格式----:成员变量名(所赋的值) Array(unsigned len)

:n(len),p(new T(len))--------------------成员变量初始化列表(只用于构造函数中,代替下面两句) {

//p = new T[len];//realloc() //n = len;

cout << \分配额外\元素空间在\ }

类中的函数方法,约定不允许修改成员变量------在函数头后加const(表只对当前对象的数据成员只作读操作。) void print()const {

while(n>0)//而n是成员变量,这样就修改了n,这样不可以,改为int i=n ; 输出p[--i];

cout<

}

零初始化T():如对基本类型而言就是0,而对于类,表示匿名对象

p[i]=T();//如p[i]只能放string型,而 要p[i]=0;就错误,所以赋值T()进行零初始化

动态生成:Array a(5);

const Array b=a;//复制一个数组对象。就是b,a指向同一块new,所指的空间。而程序结束后,调析构函数。a所指的内存已

经释放,再释放b所指的空间,系统就会提示:已放弃

区别const的用法

Time const t1;或const Time t1;表示t1是常Array(unsigned len) :n(len),p(new T(len)) {

p = new T[len];//realloc n = len;

cout << \分配额外\元素空间在\

}对象,其值在任何情况下都 不能初改变(这个对象只能调用带const的方法)

拷贝构造函数,一个类有一个默认的拷贝构造函数 Array(const Array& x)

作用:如当一个对象复制给令一个对象时用到

自已定拷贝构造函数

Array(const Array& x)把一个x. :n(x.n),p(new T[x.n]) {

//n=x.n;

//p=new T[x.n];

for(int i=0;i

只有使用了动态内存,才有必要自已改写拷贝构造函数,否则默认就够了。


C++学习宝典(笔记)(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:美学概论试题及答案1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: