以前整理的C++资料(一)
来源:互联网 发布:三星scx3400扫描软件 编辑:程序博客网 时间:2024/05/18 16:14
此文所有代码并无连贯性,只是做的笔记!
vector<string> vec;vec.push_back("aaaa");vec.push_back("bbb");vec.push_back("cccc");
普通for循环,加强for循环(适用于只遍历,不修改),迭代器(适用于所有情况)。
for(int i=0;i<vec.size();++i){ string s=vec[i]; cout<<s.c_str()<<endl;}for(string it:vec){ cout<<it.c_str()<<endl;}for(auto it=vec.begin();it!=vec.end();++it){ cout<<(*it).c_str()<<endl;}auto it=vec.begin();it=vec.erase(it);
C->C++,直接赋值
C++->C,用c_str()函数
node所有的元素
scene(场景)上有layer(层),层上有sprite(精灵)。
void Fish::move(){ cout<<"fish is moving!"<<endl;}class Fish{ Fish(); virtual ~Fish(); int x; int y; string z; void move();};Fish::Fish():x(0),y(0),z(""){}Fish::~Fish(){}
方法一:
Fish f;//直接一个对象
f.move();
方法二:
Fish* pf=new Fish();//一个指针
pf->move();
(*pf).move();一个效果
& *
声明变量时,&表示声明一个引用 *声明一个指针
在表达式中,&表示取地址,*表示取内容
int jj=1;int* ii=&jj;int* ii2=ii;(*ii2)=3cout<<jj<<endl;//(jj=3)int& rjj=jj;(引用)//一个别名而已
对引用赋值相当于对变量赋值
对指针赋值,不会改变指针所指的内容
内存泄露
测试函数
void test(){ while(true){ Fish* f=new Fish(); }}
解决方法是加: delete f;
成员函数与静态函数(单例模式)
class Director{ public: ~Director(); private: Director(); //静态的本类实例 static Director* instance; public: //获得静态的本类实例 static Director* getInstance();};Director* Director::instance=nullptr;Director* Director::getInstance(){ if(instance=nullptr){instance=new Director();}//有疑问}auto d=Director::getInstance();
成员函数需要通过对象或是对象的指针来调用,静态函数只能通过类名来调用
指针4字节(32位),8字节(64位)
继承与多态
子类构造函数在创建对象时一定会先调用父类构造函数
player构造
MT构造
我动了
MT析构
player析构(栈结构)
可以把子类的对象或是指针赋值给父类的对象或指针,让代码更加灵活。
MT t;
player p;
p=t;
player* pt=new MT();
一旦子类被赋值给(当成)父类,父类就不具有子类的特性(就只能调用父类所定义的方法)。
可以把父类对象强制转换为子类对象
MT* mt=static_cast<MT*>(pt);mt->chongFeng();
虚函数:支持动态绑定函数,编译时不确定函数的执行者,运行时再绑定到具体的对象上。
为什么析构函数一般情况下要声明为虚函数呢?
因为只有虚函数才支持动态绑定(和对象有关,和声明无关)
如果一个子类的对象,交给了父类的指针,然后去delete这个父类指针,会导致子类的析构函数无法执行。
函数指针(分离函数的地址与执行)
void (*f)(int)=&testfun1;//不执行函数f(1);//执行函数testfun1(1);//等同于上面两个语句结合void testfun1(int i){ cout<<fun1<<endl;}
新版C++ 11标准(推荐)
#include <functional>function<void(int)> f2=&testfun1;f2(1);function<int(int,int)> f3=[](int a,int b){ return a+b;}//lambda表达式(匿名函数表达式)int result=f3(1,2)//如果是成员函数Fish fish;Fish fish2;//由于成员函数必须绑定到某个对象身上执行,要把成员函数交个functionfunction<void()> f4=bind(&Fish::sayHello,fish);f4();
- 以前整理的C++资料(一)
- 以前整理的C++资料(二)
- 以前写过的C代码整理
- 递归和迭代区别(以前查询资料整理)
- 我以前的资料
- JSF资料整理(一)
- SQL资料整理(一)
- 以前的东西整理(1)
- 以前的东西整理(2)
- 以前的东西整理(3)
- 以前的东西整理(4)
- 以前的东西整理(5)
- 以前的东西整理(6)
- 过去半个月的学习资料整理!(一)
- xyssl资料整理(一) 对aescrypt2工程的理解
- 准备把以前学习深度学习的资料整理共享出来
- 以前学习C语言资料1
- 以前学习C语言资料2
- C++中重载、重写(覆盖)和隐藏的区别
- java的发展前景
- C语言库函数的实现
- linux下c/c++实例之十socket服务器实例
- Android屏幕适配
- 以前整理的C++资料(一)
- mars老师[Android开发视频教学].01_18 文件下载 源码
- [Android基础]Service
- hdu5534Partial Tree(长春现场赛H题)
- MyBatis之传入参数
- Linux下安装MySQL5.7
- java的三大框架
- uva 11536——Smallest Sub-Array
- 输入格式控制