时间:2020年07月07日 | 作者 : aaronyang | 分类 : C++ | 浏览: 952次 | 评论 0 人
表达式这块,跟C#基本一致,不一样的我列出,
auto beg=v.begin();
while(beg!=v.end() && *beg>0){
cout<<*beg++<<endl;
}
取值,并且移动指针位置到下一个对象。
等价于*(beg++)
或
cout<<*beg<<endl;
++beg;
这种写法很常见
位运算符C#也有,不常用,容易忘
& 有0就0
| 有1就1
^ 相同为0,不同为1
一开始的cout和cin用到了 <<和>>
sizeof(类型)
sizeof 对象名
比如数组大小获得
constexpr size_t sz= sizeof(ia)/sizeof(*ia)
整个数组大小除以单个
C#差不多,重复的不写了
特别的:
int a[10];
int* aptr=a; //aptr是数组a的首元素的指针
还有非常量的 转换为常量,但是相反不行
int i;
const int &j=i;
const int* p=&i;
C#都是(类型)实例名转换
提供了
static_cast
dynamic_cast
const_cast
reinterpret_cast
任何具有明确定义的类型转换,只要不包含const
int i,j;
double s=static_cast<double>(j) / i;
double d = 5; void* p = &d; double* dp = static_cast<double*>(p); *dp = 100; cout << *dp << endl;
void* 指针的全局类型,类似auto,类似C#的var,js的var
const_cast 只能改变运算对象的底层const,常常用于有函数重载的上下文中
const char* c; char* p = const_cast<char*>(c);//但是通过p写值是未定义的行为 static_cast<string>(c);//正确 const_cast<string>(c)//错误 只改变常量属性
reinterpret_cast,这玩意 本质依赖机器,尽量少用
为运算对象的位模式提供较低层次上的重新编译
尽量少用强制转换。
旧式的强制类型转换为
int* ip; char* pc = reinterpret_cast<char*>(ip); char* pc = (char*)ip;//旧式
C++的双冒号是全局
关于成员选择,-> 类似于C#的. 点号
->* 或者 .* 指向成员选择的指针
其他的跟C#差不多。
AYUI www.ayjs.net AY 杨洋原创编写,请不要转载谢谢
关于语句,都和C#一样
while,if,else,switch case,for,do while,break,continue,
他的for循环有个 范围的
vector<int> v={1,2,3};
for(auto &r:v){}这种
当然还有前面讲的 迭代器begin(),end()那个
关于goto语句,C#也有,
goto label:
end:return;
goto end;
begin:
XXXXXXX
XXXXX
goto begin;
不建议用goto语句
异常语句
try{}catch(runtime_error error){ err.what(); }
异常类型,
exception
runtime_error 只有在运行时才能检测出的问题
range_error
overflow_error 计算上溢
underflow_error 计算下溢
logic_error
domain_error 参数对应的值不存在
invalid_argument
length_error 试图创建一个超出该类型最大长度的对象
out_of_range
bad_alloc和bad_cast
异常返回 e.what()函数,返回一个C风格字符串的const char* 文本信息
编译器决定
为何C++不提供“finally”结构
因为C++提供了另一种 机制,完全可以取代finally,而且这种机制几乎总要比finally工作得更好:就是——“分配资源即初始化”。
在C++中通常使用RAII,即Resource Aquisition Is Initialization.
就是将资源封装成一个类,将资源的初始化封装在构造函数里,释放封装在析构函数里。要在局部使用资源的时候,就实例化一个local object。
在抛出异常的时候,由于local object脱离了作用域,自动调用析构函数,会保证资源被释放
推荐您阅读更多有关于“C++,”的文章
抖音:wpfui 工作wpf,目前主maui
招聘合肥一枚WPF工程师,跟我一个开发组,10-15K,欢迎打扰
目前在合肥市企迈科技就职
AYUI8全源码 Github地址:前往获取
杨洋(AaronYang简称AY,安徽六安人)和AY交流
高中学历,2010年开始web开发,2015年1月17日开始学习WPF
声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费
不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo
查看捐赠AYUI7.X MVC教程 更新如下:
第一课 第二课 程序加密教程
额 本文暂时没人评论 来添加一个吧
发表评论