C++学习
frgfnjrgn
路漫漫其修远兮,吾将上下而求索
展开
-
stl中的upper_bound与lower_bound
https://blog.csdn.net/qian2213762498/article/details/79250097转载 2020-09-04 15:41:49 · 142 阅读 · 0 评论 -
c++中的new与delete
int *p = new int[10]; //分配一个内存,指针P指向这个内存delete p; //或者 delete []p; 两个都没错,释放这个内存class A{public: A(){ std::cout << "构造函数" << std::endl; } ~A(){ std::cout << "析构函数" << std::endl; }}A *p1 = new .原创 2020-08-22 22:52:36 · 165 阅读 · 0 评论 -
c++中的const与const_cast
int select(const int& num){ int* p = const_cast<int*>(&num); //强制去掉const属性 *p = 40; //num = num - 5; //会出现错误 return num;}int main(){ const int a = 20; int b = 10; std::cout << "the num is: " <&l.原创 2020-08-16 23:36:34 · 142 阅读 · 0 评论 -
C++模板判断类是否存在某个成员变量
#include <iostream>#include <type_traits> // 检查 xxxx 是否是类T的成员template <typename T>struct has_member_xxxx{ // 如果 &T::xxxx 合法, 本函数就合法 // 下面check<T>(0)优先调用本函数, 返回值是void template<typename U> static void check(declty.转载 2020-06-12 17:27:58 · 1924 阅读 · 0 评论 -
C++重写(覆盖)、重载、重定义、多态
1 重写(覆盖)override override是重写(覆盖)了一个方法,以实现不同的功能。一般用于子类在继承父类时,重写(覆盖)父类中的方法。函数特征相同,但是具体实现不同。重写需要注意: 被重写的函数不能是static的,必须是virtual的 重写函数必须有相同的类型,名称和参数列表 重写函数的访问修饰符可以不同。尽管virtual是private...转载 2019-12-06 11:56:24 · 1719 阅读 · 1 评论 -
C++中截取两个字符之间的字符串
string picture_name = “edj_sdjj.bmp”;//this is picture numberstd::cout << "图片名:" << picture_name << endl;int nPos_1 = picture_name.find("_"); //如果改为.find("edj_"),输出将变为dj_sdjj,如果...转载 2019-08-26 18:22:22 · 2440 阅读 · 0 评论 -
C++中的c_str()函数
#include"iostream"std::string info_extend;void main(){//std::cout << "printsomething: " <<info_extend << std::endl;//ERROR!!std::cout << "printsomething: " << i...转载 2019-07-05 12:06:19 · 443 阅读 · 0 评论 -
new定位运算符
定位new运算符:new负责在堆中找到一个足以满足要求的内存块,它让你能够指定要使用的位置。头文件#include<new>#include<iostream>#define MAX 50using namespace std;char buff[MAX];class justTest{private: char *str; int ...原创 2018-11-18 15:31:34 · 427 阅读 · 0 评论 -
为什么基类的指针可以指向派生类对象,但是派生类指针不能指向基类对象
Derive *bp1;Derive dpp;bp1 = &dpp;bp1->show();Base bpp;bp1 = &bpp; //错误假设有个people类是基类,成员有姓名和身份证号,有个派生类学生student,添加了成员学号,现在如果你说的这个情况成立student的指针----pt让他指向people成员t,则t只有两个成员变量,而*pt有...转载 2018-11-18 23:58:33 · 4295 阅读 · 0 评论 -
虚析构函数
只能用new 派生类去实例基类,而不能用new基类去实例派生类Derive *bp1 = new Base(); //错Base *bp1 = new Derive(); //对在delete bp1时,如果析构函数时虚函数,则会先调用派生类的析构函数,然后调用基类的析构函数。如果不是,则仅仅只调用基类的析构函数。引入虚函数后,因为基类对象的指针可以指向派生类的对象(多态性),所以如...原创 2018-11-18 23:52:39 · 108 阅读 · 0 评论 -
为什么构造函数不能是虚函数
1,从存储空间角度 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2,从使用角度 虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身就是要初始化实...转载 2018-11-18 23:28:46 · 173 阅读 · 0 评论 -
C++中的虚函数
1.虚函数的作用虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。2.虚函数的原理简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。例:其中:B的虚函数表中存放着B::foo和B::bar两个函数指针。 D的虚函数表中存放的既有继承...转载 2018-11-18 23:24:51 · 115 阅读 · 0 评论 -
函数模板与智能指针
template <typename T> //通用的模板template<class T> //类的模板智能指针#include<string>template <typename T>class Smartpoint{private: T *m_pointer;public: Smartpoi...原创 2018-11-12 00:54:34 · 137 阅读 · 0 评论 -
C++文件输入输出操作
将内容输出至文件:1.先创建输出项目 ofstream outfile;2.关联文件:outfile.open("a.txt");3.进行实际输出操作:outfile<<"helloworld"<<endl;提取文件内容:1.cin.getline(filename,size);输入文件名。2.ifstream infile;3.infile....原创 2018-11-12 00:54:46 · 149 阅读 · 0 评论 -
函数如何使用指针来处理数组
1.C++将数组名解释为其第一个元素的地址 即:a == &a[0]2.对数组名使用sizeof将得到整个数组的长度(以字节为单位)3.&a返回的是整个数组的地址4.将数组地址作为函数参数可以节省复制整个数组所需的内存和时间 二、二维数组与指针int data[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};int ...原创 2018-11-12 00:54:53 · 496 阅读 · 0 评论 -
类变量的声明
class A{public: A(int i) { cout << "gouzaohanshu" << endl; } void he() { cout << "hello" << endl; } int *b;};int _tmain(int argc...原创 2018-11-12 23:21:29 · 887 阅读 · 0 评论 -
类的const成员变量
在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。(1)有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员;没有 const 修饰的成员函数,对数据成员则是可读可写的。(2)除此之外,在类的成员函数后面加 const 还有什么好...转载 2018-11-12 23:27:48 · 703 阅读 · 0 评论