记住:人生的每个快乐瞬间!
c++常见的面试问题,
1。public,private,protected的主要区别:
public:外部都可见;
private:只有成员函数才可见,其他的都不可见。
protected:成员函数可见,继承的类对象也可见;其他的不可见!
2。static成员函数与一般成员函数的区别:
static成员函数没有(this指针),静态成员函数是类的一部分,而非对象的一部分。可以通过class::function方式调用,不用生成实例
一般的成员函数隐含有(this指针),一般的成员函数是对象的一部分。 必须要有类生成实例才能调用。
3。strlen(const char *) 与sizeof()的区别
* sizeof是算符,strlen是函数
**.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int 类型该类型保证能容纳实现所建立的最大对象的字节大小。
***sizeof可以用类型做参数,strlen只能用char*做参数,且必须 是 以''\0''结尾的。sizeof还可以用函数做参数
****数组做sizeof的参数不退化,传递给strlen就退化为指针了
*****sizeof在编译的时候就把计算过了,strlen的结果要在运行的时候才能计算出来,时用来计算字符串的长度,不是类型占内存的大小
******sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数
##当适用了于一个结构类型时或变量, sizeof 返回实际的大小,
当适用一静态地空间数组, sizeof 归还全部数组的尺寸。
sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸
例如:
short f(); printf("%d\n", sizeof(f()));结果为2
. chr str[10];.
//strlen只能用char*做参数,且必须 是 以''\0''结尾的
cout<<strlen(str)<<endl; 结果是13.错误
cout<<sizeof(str)<<endl;结果是10;对
char str[20]="0123456789";]
//strlen 计算字符串的长度,以''\0''结尾
int a=strlen(str); //a=10;
//sizeof 计算的则是分配的数组 str[20] 所占的内存空间的大小,不受里面存储的内容改变。
int b=sizeof(str); //而b=20;
char* ss = "0123456789";
//ss是指向字符串常量的字符指针,sizeof 获得的是一个指针所占的空间,应该是长整型的所以是4
int b=sizeof(ss); //b=4
//》*ss是第一个字符 其实就是获得了字符串的第一位'0' 所占的内存空间,是char类型的所以是1
int b=sizeof(*ss) //b=1
int a=strlen(ss)//a=10