c++ 中的符号与关键字
符号按照符号的ASC码数值从小到达排列,关键字按照英文字母排序。
& 【38】
位运算;取地址;左值引用【指针、引用都是可以做类型转换的】
#include <iostream> int main()
{
int a = ;
int b = ; std::cout << ( a&b )<< std::endl; int* pa = &a; std::cout << ( *pa )<< std::endl; int& ra = a; /*引用某种情况下类似于(*pa)*/ std::cout << ( ra )<< std::endl; return ;
}
&& 【38 38】
逻辑运算;右值引用【注意:右值引用编译时候必须指定 --std=c++11】
int main()
{
int a, b; a = ;
b = ;
if (a && b) {
std::cout << "test if" << std::endl;
} else {
std::cout << "test else" << std::endl;
} int&& ra = a+; std::cout << ra << std::endl; return ;
}
:: 【58 58】
指定名称空间
int main()
{
std::cout << (int)':' << std::endl;
return ;
}
const
表示对象不可变,定义时必须要初始化。
const对象只能调用const函数成员,反之,非const对象能调用const、非const函数成员。
const_cast
去除const属性。
const_cast<type_to_convert_to>(表达式)
delete
释放内存
dynamic_cast
动态强制类型转换
dynamic_cast<type_to_convert_to>(表达式)
explicit
当构造函数只有一个参数时,避免把参数的类型转换为类类型。
下边实例,构造函数不加explicit时,会将 50 转换成边长为 50 的 cube 然后跟 aCube比较。
给构造函数加上 explicit 时候,不允许类型转换,所以下边的main函数编译不通过。
class Cube {
private :
double side;
public :
Cube(double sideVaule) {
side = sideVaule;
}
double volume() {
return side*side*side;
}
bool compareVolume(Cube aCube) {
return volume() > aCube.volume();
}
};
int main()
{
Cube aCube();
if (aCube.compareVolume()) {
std::cout << "aCube larger than 50" << std::endl;
} else {
std::cout << "aCube smaller than 50" << std::endl;
}
return ;
}
final
禁止在派生类中重写某个函数成员;禁止将某个类作为基类。
class Carton : public Box {
public :
double volume() const override final {
/*codes*/
}
}
friend
友元:友元函数,友元类
class中的元素都是,对象拥有的属性;友元跳出了这个限制,可以在外部描述这个对象,说这个对象拥有的属性,归根到底友元是描述对象的,所以放在类内部
声明也是合理的。
mutable
即使对象是const, name成员也可以被修改。
namespace
声明名称空间【名称空间中不应该包含函数main(), 运行库函数希望 main() 在全局名称空间中定义】
namespace myRegion {
/*name space*/
}
#include <iostream>
void fun() {
std::cout << "no space" << std::endl;
}
namespace space1 {
void fun() {
std::cout << "space 1" << std::endl;
}
}
namespace space2 {
void fun() {
std::cout << "space 2" << std::endl;
}
void test() {
::fun(); //在名称空间中访问全局名称空间的重名函数
}
}
int main()
{
space2::test();
}
new
分配内存
noexcept
表示函数不会抛出异常【当noexcept修饰的函数抛出异常时会直接导致函数调用std::terminate()终止】
void excpt_func() noexcept;
void excpt_func() noexcept (常量表达式);
override
如果基类中没有一个相同名称的类成员,则标记为错误。
private, protected, public
访问指定符:
private,不能在类外部访问,不能被派生类的函数成员访问
protected,不能在类外部访问,可以被派生类函数成员访问
public,可以在类外部访问
static_cast
强制类型转换
static_cast<type_to_convert_to>(表达式)
template
定义一个模板
template <typename T, Type arg, ...> class ClassNamte
{
...
};
throw
抛出异常;后边不加参数时表示重新抛出当前的异常;
try {
throw “test”;
}
catch (const char* message) {
/*...*/
}
this
在执行任何类函数成员时,该函数都会自动包含一个隐藏的指针,成为this,该指针包含了调用该函数的对象的地址。
当上边函数不加 double length = 10; 时,两个函数是相同的;
当加上之后,就不同了,说明函数访问变量时候有一个内在的访问顺序。
double Box::volume() {
// double length = 10;
return length*width*heigth;
}
double Box::volume() {
return this->length * this->width * this->heigth;
}
typeid
检查指针或引用的动态类型
#include <iostream>
#include <typeinfo> class Box {
private :
int aa;
protected :
public :
virtual void test_fun(void) {}; //必须有虚函数
};
class Carton : public Box {
private :
int bb;
protected :
public : };
class CerealPack : public Carton {
private :
int cc;
protected :
public :
};
void fun(Box& rbox)
{
if (typeid(rbox) == typeid(Box)) {
std::cout << "test 111"<< std::endl;
}
if (typeid(rbox) == typeid(Carton)) {
std::cout << "test 222"<< std::endl;
}
if (typeid(rbox) == typeid(CerealPack)) {
std::cout << "test 333"<< std::endl;
}
return ;
}
int main()
{
Carton carton;
CerealPack pack;
#if 1
fun(dynamic_cast<Box&>(carton));
fun(dynamic_cast<Box&>(pack));
#endif
return ;
}
$ ./typeid 【没有虚函数时,全都输出 test 111】
test 222
test 333
using
using namespace_name::identifier;
virtual
虚函数,调用该函数时都是动态绑定;在基类中没有定义的函数称为纯虚函数。
class Shape {
private :
protected :
public :
virtual void draw() const = ; /*=0表示没有定义,是一个纯虚函数*/
};
c++ 中的符号与关键字的更多相关文章
- C#中的@符号用法
C#中的@符号其实有很多的用法,我们来看看@有什么神奇之处. 1.限定字符串 用 @ 符号加在字符串前面表示其中的转义字符“不”被处理. 如果我们写一个文件的路径,例如"D:/文本文件&qu ...
- C#中的@符号
C# 中的 @ 符号 C# 中的 @ 符号其实有很多的用法,我们来看看 @ 有什么神奇之处. 1. 限定字符串 用 @ 符号加在字符串前面表示其中的转义字符 “ 不 ” 被处理. 如果我们写一个文 ...
- Bat 中特殊符号
批处理.Bat 中特殊符号的实际作用,Windows 批处理中特殊符号的作用: @\\隐藏命令的回显. ~\\在for中表示使用增强的变量扩展:在set中表示使用扩展环境变量指定位置的字符串:在set ...
- 【转】【bat】Bat 中特殊符号
批处理.Bat 中特殊符号的实际作用,Windows 批处理中特殊符号的作用: @\\隐藏命令的回显. ~\\在for中表示使用增强的变量扩展:在set中表示使用扩展环境变量指定位置的字符串:在set ...
- Batch pk Shell - WindowsBatch与LinuxShell比较 [变量符号和关键字]
原文地址:WindowsBatch与LinuxShell比较[变量符号和关键字] 一 简单实例1)batch file @echo off rem output helloworld :: outp ...
- [转载]C#中as和is关键字的用法
这篇文章主要介绍了C#中as和is关键字的用法的相关资料,需要的朋友可以参考下. 原文链接:http://www.jb51.net/article/80944.htm#comments 在程序中,进 ...
- Linux的nm查看动态和静态库中的符号
功能 列出.o .a .so中的符号信息,包括诸如符号的值,符号类型及符号名称等.所谓符号,通常指定义出的函数,全局变量等等. 使用 nm [option(s)] [file(s)] 有用的optio ...
- Java中的两个关键字——super、this
Java中的两个关键字——super.this 神话丿小王子的博客主页 一.super super 是java中方的一个关键字,用它可以引用父类中的成员: super可用于访问父类中定义的属性 sup ...
- DotNet中人民币符号的输出
DotNet中人民币符号“¥”的输出<html> <head>DotNet中人民币符号的输出</head> <body> <p>¥100元& ...
随机推荐
- python实现定时发送系列
1.发送邮件实现 2.定时任务实现 3.定时发送邮件实现 4.微信定时发送信息 详细源代码见:https://github.com/15387062910/timing_send 参考: 廖雪峰博客 ...
- 关于 百度 Ueditor (在chrome浏览器) 上传图片时 打开文件夹的延迟问题
在使用 ueditor 开发时, 作为一个web文本编辑器使用时. 当点击上传图片时, 文件夹要延迟好久才能打开. 解决: 针对多图片上传, 将/ueditor/dialogs/image/image ...
- 关于VS+ImageWatch在线调试问题
1.使用VS肯定离不开在线调试 2.使用Opencv在VS下进行图像处理,那肯定少不了Image Watch 这两个软件在线调试都存在大坑,弄得精疲力尽才找到解决办法!!! 以下问题都可以通过这个设置 ...
- selenium+python自动化92-多线程启动多个不同浏览器
前言 如果想用多个浏览器跑同一套测试代码,driver=webdriver.Firefox()这里的driver就不能写死了,可以把浏览器名称参数化. 后续如果想实现多线程同时启动浏览器执行用例,用前 ...
- mavenProfile文件配置和简单入门
1什么是MavenProfile 在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产 ...
- uva-331-枚举-交换的方案数
题意:冒泡排序,最小交换数的前提下有多少用方案把数组变成从小到大的顺序, 注意: 3 2 1 3的下表是1 2的是2 1的是3 交换 3 2,那么第一个交换数是1 最小交换数=逆序数的和 那么,只 ...
- CUDA C Programming Guide 在线教程学习笔记 Part 2
▶ 纹理内存使用 ● 纹理内存使用有两套 API,称为 Object API 和 Reference API .纹理对象(texture object)在运行时被 Object API 创建,同时指定 ...
- Java工具类实现校验公民身份证的有效性
转自:https://www.oschina.net/code/snippet_1859292_39120 1 package com.tg.user.controller; import java. ...
- spring Cloud 定时任务 @Scheduled
本文主要记录:如何使用spring的@Scheduled注解实现定时作业,基于spring cloud 1)pom.xml 文件引入相关依赖.spring-maven插件 <?xml versi ...
- 机器学习入门-数值特征-数字映射和one-hot编码 1.LabelEncoder(进行数据自编码) 2.map(进行字典的数字编码映射) 3.OnehotEncoder(进行one-hot编码) 4.pd.get_dummies(直接对特征进行one-hot编码)
1.LabelEncoder() # 用于构建数字编码 2 .map(dict_map) 根据dict_map字典进行数字编码的映射 3.OnehotEncoder() # 进行one-hot编码 ...