杂记(那些我还容易混淆的c和c++知识)
1:
定义一个对象时先调用基类的构造函数、然后调用派生类的构造函数;析构的时候恰好相反:先调用派生类的析构函数、然后调用基类的析构函数。
2:
多态性具体体现在运行和编译两个方面:在程序运行时的多态性通过继承和虚函数来体现;
在程序编译时多态性体现在函数和运算符的重载上;
3:
y引用: 切记要对其进行初始化
不能再把该引用名作为其他变量名的别名
引用本身不占存储单元,系统也不给引用分配存储单元
不能建立数组的引用
4:注意当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。(都可以利用下表访问具体某一个字符但是指针不可以通过下表更改内容)
char a[] = "hello world";
//在程序运行时决定,有换行符,c把字符串当做字符数组来处理
char *b="zzy";
//在编译时决定,有换行符,程序在定义字符串指针变量b时只是把字符串首地址(即存放字符串的字符数组的首地址)赋给b
char *p = a;
cout<< sizeof(a) << endl; // 12 字节
cout<< sizeof(p) << endl; // 4 字节
char str[ ]={"I am happy"};
char str[ ]="I am happy";
//==char str[ ]={'I',' ','a','m',' ','h','a','p','p','y','\0'};
//!=char str[ ]={'I',' ','a','m',' ','h','a','p','p','y'};此时用sizeof()函数可以正确求出其所占的内存大小;但用strlen()函数不能正确求出其长度,因为strlen是通过\0判断字符串结束的。
注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的
char str[ ];
str="I am happy";(错误)
char *P=new char[];
p="zfd";
strlen(p);//长度不包括结束符
但是strcpy(a,p);//又要包含p的结束符
//反正谨记:数组分配的字符串不会自动加结束符,但是字符串常量会加("zzy")
5:不能建立数组的运用,数组是若干元素的集合,无法建立一个数组的别名
string foo( );
void bar(string & s);
bar(foo( ));
bar("hello world");//不对 ,原因在于foo( )和"hello world"串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的
6:
无论是静态,局部还是全局数组只有在定义时才能初始话,否则必须通过其它方法,比如循环操作实现。
任何
int a[3];
static int b[3];
a[3] = {1, 2, 3};
b[3] = {1, 2, 3};
没有在定义时初始化都是错误的!
char *str3;str3="12345";是可以的
7:
使用&取数组的地址,它所取的是整体数组的一个地址
8:
fun1(int *ptr)
{
ptr[1]=3;
*ptr=3;
ptr=array2;//可以把另一个数组名赋给ptr,因为它是一个指针
}
fun2(int arr[])
{
arr[1]=3;
*arr=3;
arr=array2;//也可以,因为arr编译器是按照指针的形式处理的
}
int arrary[100],array2[100];
main()
{
array=array2;//编译错误"无法修改数组名"
}
杂记(那些我还容易混淆的c和c++知识)的更多相关文章
- CSS清浮动处理(Clear与BFC)
在CSS布局中float属性经常会被用到,但使用float属性后会使其在普通流中脱离父容器,让人很苦恼 1 浮动带来布局的便利,却也带来了新问题 <!doctype html> <h ...
- 常见开发需求之前端利器webstorm中的git和快捷键
需求 前端开发中我们最常用的一般是webstorm.hbuilder和sublime,因为以前使用过一段时间eclipse所以我对webstorm的感觉比较良好,再加上以前使用hbuilder维护 ...
- MINIUI版本破解
miniui类似easyui是一个web ui,功能比不上人家还是收费,收费也就算了,代码还加密混淆,过期提示脚本越写越离谱,严重低估IT人员的智慧,对此表示强烈不满,故下载了几个版本花了一小时破解: ...
- bfc+css
CSS BFC的定义 是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.在创建了 Block Formatting Context 的元素 ...
- Python运算符,python入门到精通[五]
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”.在计算器语言中运算符大致可以分为5种类型:算术运算符.连接运算符.关系运算符.赋值运 ...
- Java程序员从笨鸟到菜鸟之(十三)java网络通信编程
本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 首先声明一下,刚开始学习java网络通信编程就对他有一种畏惧感,因为自己对网络一窍不通,所 ...
- JAVA的网络编程
网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...
- JAVA网络编程【转】出处不详
网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编程的大门而放弃了对于该部分技术的学习. 在 学习网络编程以前,很多初学者可能觉得网络编 ...
- 【PHP入门到精通】:Ch03:PHP语言基础
1, PHP风格 这里为了显示代码把"<"和">"和key值以空格分开了,实际书写时切记不要将其分开: (1) < ?php ? >: ...
随机推荐
- django框架中form表单Post方法无法提交 Forbidden (403) CSRF verification failed. Request aborted.
问题如图: 解决方法: 在视图函数中引入并使用装饰器 from django.views.decorators.csrf import csrf_exempt @csrf_exempt
- Django请求生命周期之响应内容
Django请求生命周期: 1.发送http请求2.服务器接受,根据请求头中的url在路由关系表中进行匹配(从上到下)3.匹配成功后,执行指定的views函数 URL -> 函数 ==>F ...
- windows10(本机)与VirtualBox中CentOS7(虚拟机)互相访问总结
先把我这里的环境说下: 本机(windows10),发布了一个tomcat服务:http://192.168.0.106:8080/axis/services/VPMService?wsdl 如下图: ...
- ssm 注解@ResponseBody 返回json 乱码问题
方法一:在@RequestMapping上加入 produces方法 @RequestMapping(value = "/upload.do",method = RequestMe ...
- Climbing Stairs 爬楼梯问题,每次可以走1或2步,爬上n层楼梯总方法 (变相fibonacci)
You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb ...
- App更新之dialog数字进度条
App更新之dialog数字进度条 前言:现在一般的Android软件都是需要不断更新的,当你打开某个app的时候,如果有新的版本,它会提示你有新版本需要更新.当有更新时,会弹出一个提示框,点击下载, ...
- alembic 数据库管理
alembic简介 Alembic是SQLAlchemy作者编写的Python数据库迁移工具 安装 pip install alembic alembic 操作流程 初始化 alembic init ...
- SpringMVC中使用DispatcherServlet
接触Web开发的时候我们会利用Servlet来接收和转发前端页面的各种请求,我们通常会在一个页面中对应一个Servlet来处理这个页面上和用户交互的信息,通常我门遇到5个以内的页面自己来写Servle ...
- SpringMVC笔记——SSM框架搭建简单实例
落叶枫桥 博客园 首页 新随笔 联系 订阅 管理 SpringMVC笔记——SSM框架搭建简单实例 简介 Spring+SpringMVC+MyBatis框架(SSM)是比较热门的中小型企业级项目开发 ...
- JQuery学习---JQuery深入学习
属性操作 $("p").text() $("p").html() $(":checkbox").val() $(".te ...