C++ 牛客网做题笔记【800题总结】

来源:互联网 发布:vb源码大全 编辑:程序博客网 时间:2024/05/17 13:10

1:C语言中,输出格式%M.Ns,例如%5.3s,输出字符串左端的n个字符,这n个字符输出在m列的右侧,左补空格


2:STL是线程不安全的,bieset不是标准库的容器,只是STL中的模版类,不符合STL的特性


3:std::sort()是不稳定的排序算法,但它并不是简单的封装快排,sort()会根据数据的具体情况进行具体的优化,使用不确定的排序方法


4:C语言的模块化是通过函数来实现的


5:在JAVA中,反射会破坏代码的封装性,破坏原有的访问限制符,典型的就是Mock对象进行的单元测试,Mock通过反射数破坏了面向对象的封装性


6:sizeof是用来计算栈大小的运算符,不涉及全局区;多个虚函数若属于同一个类,只需要一个指针指向虚函数表即可;class类也需要字节对齐


7: p = malloc(100) ; pp = p;  free(p); free(pp) 产生的问题是两次free,注意需要free分配的内存空间,但是也不能多次free,且打开的文件流也需要关闭


8:sprintf()是一个变参函数,将数据打印到字符串上


9:C++中,箭头(->)指针指向成员的运算符:左边必须为指针;点号(.):左边必须为实体;点操作符的优先级比间接寻址符的高*s.p = *(s.p)


10:class A  ; A a();定义的是返回值为A类型的函数,而不是调用A的默认构造函数,记住这点!!!


11:在函数内的复合语句中定义的变量只在复合语句中有效;函数中的形式参数是局部变量


12:int *p ,x = 0;  *p = x;这样的赋值是不对的,因为指针p还没有初始化,对p取值是错误的,可以让p = NULL;


13:fscanf(),通过文件指针fp从文件流中读取数据;fprintf(),将数据写入文件中


14:面向对象程序设计不同于其他语言的特性:多态、封装、继承


15:多态分为编译时多态和运行时多态,编译时多态通过函数的重载实现(非模版),运行时多态通过虚函数实现,也称动态绑定


16:所谓类型安全,就是指两个类型直接相互转换需要显示的转换,不能仅仅用一个等号进行隐式的转换,MFC中的Cstring是类型安全的


17:函数的类型不能作为函数重载的依据;纯虚函数也可以直接继承不修改


18:C++11新标准中,派生类能够重用其直接基类的构造函数,但是这并非是以常规的方式继承而来,只是为了方便称其为“继承”;类不能继承默认、拷贝、移动构造函数


19:C++标准规定,如果派生类中声明的成员与基类的成员同名,那么基类的成员会被覆盖,赋值运算符重载函数不是不能被派生类继承,而是被派生类默认的赋值运算符重载函数所覆盖了(赋值构造函数)==>构造函数不能被继承,析构函数也不能被继承


20:C98支持无返回类型的函数,默认返回int,C99开始函数必须要有返回值。。。


1 0
原创粉丝点击