
C++
文章平均质量分 54
chrisxiaoniu
这个作者很懒,什么都没留下…
展开
-
关于公有继承,保护继承和私有继承
假设现在有一个名叫大地主的类,他有下面三个成员:公有成员:一块空地保护成员:传家宝私有成员:QQ号所谓公有成员,就是你可以和大地主商量,让他把空地租给你,对外说的时候,你要说清楚你这个地是大地主的一块空地,也就是:大地主.一块空地传家宝当然是只给其后代(派生类)的,其他人要用,看他卖不卖(提不提供接口);QQ号私有的,不管是谁,都要他给密码(接口)才能使用。现在大地主年事已高,小地主来继承了,他有...原创 2018-04-30 15:05:31 · 278 阅读 · 0 评论 -
C++ 学习笔记
个人记录:1、strcpy_s 原型:strcpy_s( char *dst, size_t num, const char *src ),也可以像strcpy一样只接收两个参数,但第一个参数必须是char型数组,而不能是new出来的指针。也就是必须显式指出可复制的长度。2、在VS的C++代码中,指针直接比较大小,编译器并不会直接报错,但直接比较指针通常来说是没有意义的,返回的只是...原创 2018-04-18 18:10:53 · 153 阅读 · 0 评论 -
C++中的操作符重载
首先说句,为什么要使用操作符重载呢?其实我们使用别人编写好的类时往往不用考虑,你不用查看cout << a; 中<<是如何重载的,就可以自如地在屏幕上输出或在文件中写入字符,字符串,数字,乃至指针地址,可当我们自己设计类给自己或其他程序员使用时就不得不考虑了。现在假设我设计一个时间类,初始声明代码如下class Time{private: int hours; in...原创 2018-04-16 19:57:21 · 223 阅读 · 0 评论 -
关于string头文件
C++中不包含string头文件和包含string头文件的区别何在,为何都能使用string类来创建对象?答:今天特别无聊,这个问题我也一直奇怪,搜索也没满意的答案,就自己猜测了。代码实测使用string类创建实例只需要包含iostream,然后使用名称空间std即可,而string类的声明是在头文件xstring中,那就只有一个可能是iostream包含了xstring,然后就一顿乱点,还真的找...原创 2018-04-28 16:59:26 · 2971 阅读 · 1 评论 -
C++文件打开模式如果使用了||会怎样?
这来源于自己书写错误,结果编译器没有报任何错,但没得到想要的结果,找了很久的错,尴尬!使用的编译器为VS2013,在此编译器下,文件模式参数中,使用ios或ios_base效果相同。言归正传,比如写一段常用的文件追加代码,正确的如下:const char * file = "aa.txt";ofstream fout(file,ios_base::out | ios_base::app);假如书...原创 2018-05-30 10:37:56 · 447 阅读 · 0 评论 -
关于C++的函数重载
函数重载是C++的新特性,那到底为什么C++可以而C却不行呢?原因在于C++编译器会执行名称矫正或者叫做名称修饰。例如,可能将myfunc(int)转换为_myfunc_i,而将myfunc(double)转换为_myfunc_d(实际上会转换为带有@及乱码的复杂形式,这里为了便于说明,采用这种形式)。而C语言编译器则可能直接转换为_myfunc,C++在调用时就会根据不同的参数列表来选择对应的函...原创 2018-04-04 12:05:21 · 149 阅读 · 0 评论 -
关于Visual Studio的预编译头文件
使用Visual Studio很久了,关于这个细节今天终于算弄清楚了,记录一下。使用Visual Studio或其他IDE学习C++时,即便是最简单的hello world的控制台程序,首先也要新建一个工程,而不能直接用记事本新建个后缀为cpp的文本文件,然后一条命令(比如cc)就完成了的,那么新建工程时就有下面3种类型:1、默认状态下这时候默认预编译头,生成的文件结构如下:2、取消勾选Preco...原创 2018-04-03 17:01:11 · 7417 阅读 · 0 评论 -
C++转C#的一些误区
1、new操作符刚开始写C#代码的时候就会发现这样一个问题,如下代码会报错: static void Main(string[] args) { int a; Console.WriteLine(a); }C++中会默认为局部变量赋初始值,C#则不会,如果我就是不想赋初始值或者感觉没有合适的初始值给它怎么...原创 2018-07-02 11:24:04 · 399 阅读 · 0 评论