09-4-9 面试 收获 弄了点C++的基础

    最近忙着准备基础知识,又不时的在网上投些简历,今天接到一家网络游戏公司的面试通知,告诉我的时候,我甚至都没有把这个公司的信息在网上找到(最后确认在电话里面把名字听错了),就胡里胡涂的去了那家公司,一看傻眼了,是家游戏公司(自己虽然想从事这方面的工作,但基础不够就投得很少),一去就叫做了些笔试题,看了了题更是感觉不好,很多游戏方面的,甚至还有些Linux的,在看了题之后就打消了向这个公司奋斗的念头(只是暂时这样的),但也不能白去啊,毕竟还花了钱钱挤了公交呢,就把所有的题看了很久很久,记了一小部份,现放在这儿,增加一下印象;虽没做多少题目,但还是从中找到了很多很多的自岙不足,感觉收获还是挺大的。

结构体可以算是类的一种扩充,其内虽不能包含函数,但可以有函数指针,这样就可以方便使用函数了

,和类的区别在于,结构体中默认为Public类型,而类中默认为Private类型

 

CONST #define的区别

 

#define 宏名称 宏值

注意,宏定义不是CC++严格意义上的语句,所以其行末不用加分号结束。

 

常量定义的格式为:

const 数据类型 常量名 = 常量值;

 内存空间的分配上。define进行宏定义的时候,不会分配内存空间,编译时会在main函数里进行替换,只是单纯的替换,不会进行任何检查,比如类型,语句结构等,即宏定义常量只是纯粹的置放关系,如#define null 0;编译器在遇到null时总是用0代替null它没有数据类型(还有疑问请找C语言书籍看预处理部分或者看MSDN.const定义的常量具有数据类型,定义数据类型的常量便于编译器进行数据检查,使程序可能出现错误进行排查,所以constdefine之间的区别在于const定义常量排除了程序之间的不安全性.

 

 

纯虚析构函数

1.      c++抽象类、虚函数和纯虚函数

    析构函数,构造函数这些还是和普通的函数是不一样的。对照构造函数,派生类的构造函数必须先

调用基类的构造函数。也许你没调用过,那是因为默认情况下调用无参数的默认构造函数。类似的,析

构函数也是一样,他必然会调用基类的析构函数,不同的是,他是后调用基类析构函数的。所以基类的

析构函数必须要有函数体。基类纯虚析构函数必须要有一个空的函数体,否则无法通过编译链接。

 

2.结构体中的函数(C++)

 

既然C++在介绍类的时候说过,类是取代结构体的.可见结构体的功能并非我们平时用到的这么简单,没有太多人知道结构体中也可以有自己的函数成员.

举个例子:

#include <stdio.h>

struct DEMO

{

int m;

 

DEMO(int k) //构造函数

{

this->m=k;

printf("after init,m=%d\n",m);

}

 

void func()//一般函数

{

printf("function of struct.\n");

}

};

 

void main()

{

struct DEMO demo(33);

demo.func();

}

 

保存为test1.c , VC6.0gcc编译都会出错. 这可能说明标准C是不支持结构体包括函数成员形式的(因为后缀.c使得VCgcc选择c编译器). 但是如果将文件后缀改为.cpp(也就是选择c++编译或g++编译),就不再有错误了:

 

 

关于指针的问题

 

#include <stdlib.h>

#include <iostream.h>

#include <string>

void main()

{

         cout<<sizeof(int)<<endl; //输出int型数据所占的长度4

         cout<<sizeof(char)<<endl; //输出char所占的长度1

         char str1[]="abc";  //str1分配了空间,即有独立的地址

         char str2[]="abc";  //str2分配了空间,即有独立的地址

         char *str3 = "abc"; //指向const charChar*型指针

         char *str4 = "abc"; //指向const charChar*型指针

         cout<<str1<<endl;  //输入str1的值abc

         cout<<(str1==str2)<<endl; //输出结果为0,因为两个指针的地址不一样

         cout<<(str3==str4)<<endl; //输出1   原因不清楚,目前估计是因为同时Const char类型

         cout<<strlen(str4)<<endl; //输出值3

         cout<<sizeof(str4)<<endl; //输出值4

//      cout<<str3<<endl;

//      cout<<str4<<endl;

}

输出结果

 

 

posted @ 2009-04-10 22:53  ~笑  阅读(432)  评论(2编辑  收藏  举报