c++
qq_34872215
这个作者很懒,什么都没留下…
展开
-
C++11 新特性 —— 关键字noexcept
https://www.cnblogs.com/sword03/p/10020344.html转载 2020-08-15 11:53:51 · 294 阅读 · 0 评论 -
c++ static 用法
一、c++static用法二、c++四种作用域本地变量在栈(又会被叫做堆栈)中,new得到的变量在堆中,全局变量在一个全局数据区中,常量,比如"helloworld"是在代码段中的...原创 2019-10-27 16:23:43 · 138 阅读 · 0 评论 -
c++ 拷贝构造函数和拷贝赋值运算符
我们都知道C++有浅拷贝和深拷贝的概念。默认情况下,用户编写一个类,而没有编写拷贝构造函数的时候,C++编译器会生成一个默认的拷贝构造函数(也叫合成拷贝构造函数),这个默认的拷贝构造函数只进行浅拷贝,如果类中包含指针,文件句柄,socket等资源的时候,这些资源就只有一个副本。拷贝构造函数就是用来给用户提供一个初始化接口,实现对象资源的深拷贝。还有一个拷贝赋值的概念:一个对象给另外一个对象赋值的时...转载 2019-10-25 16:52:58 · 408 阅读 · 0 评论 -
c++ 继承时产生的二义性问题与虚基类
问题现象一:问题现象二:但是上面这种无二义性的解决办法会产生很多冗余,也会浪费空间。问题二解决方案的例子:在base1和base2中就只存放了指向base0的指针,所以在derived对象中,就只存在一份base0了。这个时候的构造函数有点特殊:示例:虽然base1,base2的构造函数中都为base0传递了参数,但是只有...原创 2019-10-24 21:39:53 · 249 阅读 · 0 评论 -
c++ 派生类构造函数
派生类的构造函数中还需要负责传递基类需要的初始化参数。c++11的这种情况只适用于当派生类很少增加新的数据成员或者不增加新的数据成员的情况。因为这样从基类继承过来的构造函数只能初始化从基类继承的成员,派生类新增的数据成员则不能通过构造函数初始化。如果说派生类的新增数据成员定义了类内初始值,那就可以用类内的初始值去初始化这些新增的数据成员,如果没有定义类内的初始值,那就只能通过...原创 2019-10-24 20:55:52 · 350 阅读 · 0 评论 -
c++ 初始化
一、默认初始化、值初始化、拷贝初始化、直接初始化和列表初始化:默认初始化依赖于类的默认行为,函数外定义的类如果没有初始值,将被默认初始化为这个类“0”这个概念对应的值。函数内定义的未初始化的值执行默认初始化时有两种情况,当这个类是C++内置类的时候,比如说int,float,这个值不被初始化;当这个类是用户定义的或者是我们使用类模板定义的,将被构造函数初始化。其中如果这个类的对象被隐式初始化为...原创 2019-10-14 17:18:48 · 230 阅读 · 0 评论 -
c++ 引用
最后一条中,i*3肯定是会有一个结果,但是这个结果没有一个有名字的变量存放这个结果,i*3的结果是运行之后,存放在一个临时的匿名变量中,因为没有名字,所以不能将i*3的结果作为引用传递给func函数。因为引用不是对象,所以不能取地址,所以定义一个指向引用的指针是非法的,所以有上面第二条。但是指针是对象,所以可以定义int*&p;因为引用不是对象,所以自然,也就没有引...原创 2019-10-21 16:01:29 · 91 阅读 · 0 评论 -
c++ virtual function(虚函数)
一、关于c++虚函数的用处:C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术虚函数是指一个类中你希望重载的成员函数 ,当你用一个 基类指针或引用 指向一个继承类对象的时候,调用一个虚函数时, 实际调用的是继承类的版本。 ——摘自M...原创 2019-10-23 11:28:09 · 230 阅读 · 0 评论 -
c++指针与数组
c++指针与二维数组:注意:上面的代码int*pLine[3]的理解方式是从右向左理解:首先知道定义的是一个大小为3的数组,这个数组的名字叫做pLine,然后知道数组中存放的是指向int的指针。也就是我们的名为pLine的数组中存放的是3个指向int类型的指针。但是如果定义的是int (*pLine)[3] ,那么,这个时候需要从内向外理解:首先是圆括号括起来的部分,*p...原创 2019-10-23 16:52:01 · 924 阅读 · 0 评论 -
c++ typedef void (*funcptr)(void)的含义
fun a;//等价于void (*a)();这样声明起来就方便多了void (*a)();表示a是个指针,指向一个不带参数、返回值为空的函数定义一个函数指针类型。比如你有三个函数:void hello(void) { printf("你好!"); }void bye(void) { printf("再见!"); }void ok(void) { printf("好的!");...转载 2019-10-23 17:01:37 · 631 阅读 · 0 评论 -
c++ 使用new进行动态内存分配
使用new进行动态内存分配,返回的结果是分配的地址,所以接受返回结果的应该是一个指针变量。使用new进行动态内存分配,需要自己在函数中,当不再使用那个变量的时候,需要使用delete手动释放内存,否则会导致内存泄漏。1、定义头文件Point.h:class Point{public: Point(); Point(int x, int y); ~Point(); voi...原创 2019-10-24 17:02:48 · 1492 阅读 · 0 评论 -
c++ public、protected、private继承方式
公有继承:私有继承:私有继承可以将基类的原有对外接口都封闭的作用。那么在派生类之外,通过派生类的对象就不能直接访问从基类继承来的成员和成员函数,因为通过private这种方式继承的时候,继承过来的那些基类的成员都变成了私有的了,所以在派生类外就不能访问了,但是在派生类里面,还是可以访问的。所以这个时候,如果还是想访问基类中的成员,就必须在派生类中重新定义对外的访问接口。...原创 2019-10-24 20:22:44 · 274 阅读 · 0 评论 -
c++中的const关键字
以上代码运行时是会报错的。首先“helloworld”这是一个常量,是存放在代码段中的。是不可改变的。因为char *s=“helloworld”这句代码只会将“helloworld”在代码段中的地址交给s这个指针。所以下面的那句s[0]='B',是通过s这个指针访问代码段中的“helloworld”这个常量,因为常量是不可更改的,所以程序会报错。所以,其实,对...原创 2019-10-21 11:03:00 · 166 阅读 · 0 评论 -
C++中string::npos的一些用法总结
https://blog.csdn.net/JIEJINQUANIL/article/details/51789682转载 2019-10-14 17:23:16 · 1817 阅读 · 0 评论 -
c++中size_t和size_type的区别
size_type:由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标准库类型size_type定义为unsigned类型。ps :为了使自己的程序有很好的移植性,c++程序员应该尽量使用size_t和size_type而不是int,unsigned。1. size_t是全局定义的类型;size_type是STL类...转载 2019-10-14 17:20:29 · 633 阅读 · 0 评论