`
为心中梦想挥剑的那一刹那
  • 浏览: 6864 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

c++程序设计梳理(谭浩强)7-8章

 
阅读更多

 一整天想着“塞翁失马”的问题,自己多少有点阴郁。不过还好,每当自己着手技术学习或者是项目看法的时候往往一步步心情就会平复下来。这也是自己为什么拼命要走技术路线的原因。喜欢是肯定的。当然苦也是异于常人的。刚刚看了篇刷了各大offer的微信共享,牛人不缺,缺的是有梦想能坚持的人。不知道自己能走多远,但是,在各种前辈思想的鼓舞下,我想他的期限是一辈子。
 今天来整理第7章到第8章。由于7章的结构体往往在c++中会被类所取代,可能在c语言中是重头戏,当年我考研的时候,由于拜读的是大名鼎鼎的严蔚敏严老师的数据结构,所以最后考数据结构的时候,我全是用结构体写的题目,就最后结果来看,还是挺成功的。外加研一在linux下实现了一些题目,其中有多线程,高并发等等,也是用结构体来写的,所以我在此将一些比较容易忘记的,关键的进行记录吧(第7章的内容),其他的我就不上了,包括后面的习题。我将所有数据结构的实现全部移到后面的面向对象的部分,这也是c++这门语言的基石。
Chapter7~Chapter8
->自定义数据类型
1、先上一个结构体的代码:

#include<iostream>
using namespace std;
struct MyStruct
{
	int num;
	char name[10];
	char sex;
	int age;
	float score;
	char addr[20];
};
MyStruct ms1, ms2;
int main(){
	return 0;
}

2、string类型只存具体字符串的一个入口地址,所以用sizeof来求它的大小是固定的,我在VS下运行是28,这个和具体的编译器实现有关,所以不能一概而论。但是当他包含在结构体或者是类当中,是其中的一个属性,那么他只是string类型的大小,和具体string对象的内容无关,所以整体的结构体的大小不会睡着string的长度增长而增长,推荐使用string。
3、结构体求sizeof的时候,注意内存对齐的问题,VS下面是4字节对齐的。例如:

struct MyStruct
{
	char ch;
	int a;
};

这种结构体的大小是8,虽然char的长度是1,int的长度是4,但是为了4字节对齐原则,这个的大小是8(在char那个地方的后面补齐3字节);注意区分下面两种的对其方式方法:

struct MyStruct
{
	char ch;
	char cj;
	int a;
};//大小是8
struct MyStruct1{
	char ch;
	int a;
	char cj;
};//大小是12

4、枚举类型的举例:
enum MyEnum
{
 a=9,b=1,c,d,e,f
};
MyEnum me=c;
me=(MyEnum)3;//这个的值是d
可以在内部给枚举的常量成员赋值,在最后一个赋值的常量后面的常量,每一个递增1,例如c的值是2,d的值是3,因为是常量,并不能在外部给常量赋值,例如a=4在外面的话就不正确了。
5、typedef的使用:
typedef int Integer;//这个将Integer代替int类型
typedef char *P;//这个是将P设置为char型的指针,以后P a;这种,a就是char指针类型
p.s:这个东西在程序语言中最关键的用处是便于移植,在嵌入式中使用广泛!

->类和对象(这一章节介绍居多,重点的难点都在这一章开始,后面的每一章,所以这一章我也将较为简洁的总结一下。此后,每一章单独写,不再两章合并)
1、类的老掉牙的三大特性:继承、封装、多态。为什么还要在这里提出来,前几天面试京东的时候,在第二面,面试官花了一大篇幅问了我对面向对象的特性的理解,并且他也提出来,他并不想听很课本很理论的东西,他要我说项目之后的心得体会。我着重说了下封装特性,主要基于我研究生做的几个oa系统的开发来说的,其中后台的代码分三层来写:action层,service层,DAO层。其中action层的代码负责controller的角色,负责控制转发或是拦截,service层的代码主要就是进行业务的拼装,将DAO层的返回数据,根据业务的需求,进行组装,达到我们想要的业务逻辑,DAO层的代码主要就是纯的和数据库打交道,代码在这一层进行各种的数据上面的增删改查,所以里面会有很多的sql语句了等等。在service层的业务拼装过程中,我们并不需要关心DAO层的代码具体要怎么的去进行数据库操作的,我们直接来调用即可,并且如果我们要进行DAO层或者是service层的代码改动,只要保证接口一致,并不需要关心到底各层分别作了什么改动,这就是我们软件开发过程当中,如今很流行的解耦和,低耦合。我觉得这个项目体会,应该能很好的说明面向对象的特性。(看面试官还可以,挺满意!)
2、类的权限限制符:
public:共有成员,类外可以访问的;
private:私有成员,只有类内成员可以访问,当然设置为friend的成员也可以访问;
protected:类外不可访问,但是此类的派生类可以访问,当然友元函数(friend)也可以访问。
3、类和结构体的区别:(这个问题,今年的校招我碰到了!)
用struct声明的类,如果对成员不作private或者public的声明,系统将其默认为public;而class定义的类,如果不作这些声明,系统将其成员默认为是private的。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics