会php学c++,2020-02-28 从php开始学c++

//1.C++引入命名空间

namespace mynamespace{//第一次创建

void myfun(){

}

}

namespace mynamespace{//第二次使用,可以新增函数和代码

}

mynamespace::myfun();//调用

//1.2 引入命名空间

#include mynamespace.h

using mynamespace;

myfun();

//2.1 输入和输出

std::cout << first << second << std::endl;//输出firstsecond

std::cin >> value1 >> value2;//接受两个输入值,赋值给value1和value2

//3 变量别名,公用同一段内存,也就是php的绝对引用

int age = 18;

int &copyage = age;

4 常量

const myconst = 1;//不能用变量赋值,比如const myconst = aaa; 是不行的

constexpr myconst2 = 2;//预编译的常量

constexpr int myfun(){

int abc;

for(i=0;i<10;i++){

std::cout << i << std::endl;//报错,表达式必须包含常量值

}

return 5;

}

constexpr int myconst3 = myfun();//不允许,其中int abc未初始化

//字符拷贝 strcopy_s取代strcopy

//5 分配内存 new/delete 取代 malloc/free

//6 函数声明类型后置

auto myfun(int a,int b)->void;//函数声明

auto myfun(int a,int b)->void//函数定义

{

return;

}

//7.1 vector 容器关键字,类似结构

//7.2 const常量关键字,const值不可改变

vector vecvalue{1,2,3,4,5};

//7.3常量迭代器

const vector::iterator iter;

//7.4 begin,end返回常量迭代器

for (auto iter = iv.begin();iter != iv cend(); ++iter){

cout << *iter << endl;

}

//7.5 迭代器失效,不要在循环时修改数据

for (auto vecitem : vecvalue){

//改变vecitem的值会报错

cout << vecitem << endl;

}

for (auto beg=vecvalue.begin(),end = vecvalue.end();beg != end;++beg){

//改变beg的值会报错

cout << *beg << endl;

}

//8.1 类的构造函数

C++中,存在先写函数声明,另写函数定义,参数的默认值只能在函数声明的时候给

//8.2 构造函数可以存在多个,但是参数的属性或者参数一定要有区别

//8.3 构造函数定义前使用explict关键字, 构造函数只能显式类型转换。

// 防止在单参数的构造函数时,发生对传入的不合规参数进行隐形类型转换

//8.4 构造函数初始化列表,用来构造函数后,快捷定义成员变量

public:

int selfVar;

MyClass::MyClass(int myVar)

:selfVar(myVar)//构造函数初始化,提倡所有成员变量使用这用方法

{

//selfVar = myVar;//等同赋值操作

}

//8.5 在类里的函数后面使用const关键字,表示const函数不会修改类中的成员变量

const成员变量,只能调用const函数,确保不会被修改

//8.6 可以使用multible修饰成员,可以调用const/非const函数

//9 static修饰符,编译时生效一次,限制某个全局变量只能在当前文件生效,声明后使用则定义时不用使用,默认给0

//10.拷贝构造函数

public:

Time(Time &tempTime,int a =50)//拷贝构造函数,在类对象某些形式拷贝的时候自动调用

//11重载赋值运算符时,对传入的参数使用const类型,可以防止被拷贝值的被修改

//12 析构函数,在销毁时调用,使用~加类名作为名称,不可被重载

//13.1使用vitual修饰符,在父类/基类中修饰函数,为虚函数,则父类指针使用子类初始化时,在调用子类的时候可以调用虚函数

Human *human = new Men;

human->eat;//调用子类Men中的eat函数

human->Human::eat;//调用父类中,的eat函数(修饰为vitual的虚函数)

//13.2父类中声明为虚函数的,子类中的同名函数也要为同参数且为虚函数,不一样则会覆盖父类中同名函数,在C++11中使用overwrite作为结尾,表示覆盖父类中的同名虚函数。

//13.3如果在父类的函数声明中使用final关键字的虚函数,则该函数无法被重写

//13.4虚函数声明后,必须被定义,在执行中才知道被绑定的位置

//13.5虚函数的多态性,指执行时会找到虚函数的列表,对应的函数入口,为虚函数运行时的多(状)态性

//13.6纯虚函数,在父类中没有定义自己的函数实现,但是子类中都要实现这个方法,这个类也成为抽象类,不能生成对象,仅用来管理子类对象

virtual vitualFun() = 0;

//还可以

//基类的指针New子类的对象,在delete时不会不会调用子类的析构函数,导致内存泄漏,所以一般定义析构函数为虚函数,使用其多态性。

//13.7 基类有了虚函数,就会为该类生成到虚函数表。则该类的基类指针,则可以用dynamic_cast(用于转化父类指针为派生类指针)和typeid(返回指针或者指针对象的实际类型)实现RRTI功能

//14 把函数设置为一个类的友元函数,则可以访问类中的所有对象,使用friend修饰符。也可以定义友元类,友元的定义是单向,不可传递继承的

//15 左值和右值,不能在左边被赋值的为右值,左值引用把右侧的值绑定到左侧,右值引用把左侧绑定到右侧(比如地址引用)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值