c++语法

  • 全局变量先于main函数执行,在最初运行时就调用构造函数

  • main函数之前是用来声明和定义全局变量和函数的,并由编译器进行预处理,给那些全局变量和定义的函数分配内存和地址,不能设计可执行代码。 

编译器在编译阶段对main函数之前的全局变量进行内存分配,对定义的函数生成可执行的代码,并保留该函数的地址以供main函数调用,而赋值语句操作是一句可执行代码,又没有类似函数指针的东西供main函数调用,所以只能放在main函数内部进行顺序执行。
  

在多文件组织中,只有在包含main函数的源文件里面的main函数内部才能对变量进行赋值语句的操作,而其它不包含main的源文件这不能进行变量的赋值操作,只能进行变量的声明。

但并不是说在main函数之前就不能对变量进行初始化赋值:可以在定义变量的时候对变量进行初始化赋值。如下:
  int a=10;
  student s1={10};

虽说可以在初始化时赋值,但是如果是个自定义类,在main()外面还是不能赋值.  只有基本类型在初始化时可以赋值.

 

  • 在使用{}初始化数组时,必须在定义处初始化。

int a[3]={1,2,3};正确

int a[4]; a[]={1,2,3};错误 

 

 

  • 只要基类的函数声明为虚函数,其所有派生类的同名函数都是虚函数

  • char* str的常长字符串初始化方式

// 错误
const char* aa = "fsd
sfdf";

// 正确,占有8个字节内存
const char* aa = "fsd\
sfdf";

// 该字符串一共占有10个字节
const char* ss = "fed"
"fwf"
"fwf";
const char * usage =
" \nexample command line for calibration from a live feed.\n"
"   calibration  -w=4 -h=5 -s=0.025 -o=camera.yml -op -oe\n"
" \n"
" example command line for calibration from a list of stored images:\n"
"   imagelist_creator image_list.xml *.png\n"
"   calibration -w=4 -h=5 -s=0.025 -o=camera.yml -op -oe image_list.xml\n"
" where image_list.xml is the standard OpenCV XML/YAML\n"
" use imagelist_creator to create the xml or yaml list\n"
" file consisting of the list of strings, e.g.:\n"
" \n"
"<?xml version=\"1.0\"?>\n"
"<opencv_storage>\n"
"<images>\n"
"view000.png\n"
"view001.png\n"
"<!-- view002.png -->\n"
"view003.png\n"
"view010.png\n"
"one_extra_view.jpg\n"
"</images>\n"
"</opencv_storage>\n";
  • 继承

public继承:子类不能访问父类的私有成员,能够访问访问public、protect成员。但是子类的对象不能访问父类的protect成员。

protect继承:子类只能访问父类的公有成员,不能访问私有成员和保护成员。子类对象只能访问父类的公有成员。

private继承:子类不能访问父类的所有成员。子类对象不能访问父类所有成员。

-protect修饰的成员不能被外界所访问
-protect修饰的成员能被子类直接访问
-protect关键字是为了继承而专门设计的

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值