[C++讨论课] 课堂记录(一)
今天第一次参加c++讨论课,记录下了各组同学的展示的问题或者解决方法,也有一些知识点上的内容,供以后复习参考。
1.常量指针和指针常量问题
常量指针:指向常量的指针,例如const int *p = &a,可以改变p的指向,但是指向的必须是常量。
指针常量:就是常指针,例如int * const p = & a ,可以修改p指向的变量的值,但是p的指向改不了。
2.函数传参问题
void f(const int &a) 可以传入表达式参数
void f(int &a) 不能传入表达式参数
原因:表达式其实是一个函数,例如a+b返回的其实是个临时变量的值,传值过来就被视为常量,而c++规定引用传参不允许绑定常量,也就是说,引用必须引用的是一个变量,由于传来的是常量,所以不能引用。而前者是常引用,也就意味着可以引用常量,从而解决了表达式传参的问题。
3.只传部分参数返回结构体引发的生命周期问题
struct AA{
int x;
}
AA *f(int a,int b,int c){
AA aa;
AA * p = &aa;
aa.x = a + b +c;
return p
}
这个函数显然写的有问题,因为aa的生命周期在函数内,在函数外就没用了,因为返回指向aa的指针是没有意义的。
解决方法:
①动态生成结构体
A *p = new A();
这种new出来的结构体生命周期是在你delete之前一直存在的,所以符合要求,不过要记得在main函数执行完了或者在其他地方释放掉内存。
②局部静态结构体
static AA aa;
在AA aa 前加上static让他成为静态变量,这样生命周期就长于这个函数了,不过这样破坏了C++的局部可见性,不是很推荐。
然后其他的引用等方法没必要写了,太常规。
4.cin出错引发的问题
int a;
cin<<a;
我们输入一个字符* 然后程序后面再写个cin,发现读取不了数据了,说明cin出错了,我们打印cin.fail()发现标志位为1,表示有错误,那么很简单,我们要想再读取输入,就必须清楚标志位,cin.clear()即可。
5.string传参问题
有同学讲到string作为参数给函数,然后函数内部想用c的char * 的数据类型函数操作的时候,发现操作不了。于是找到了c_str()方法,将string类型转换为char * 类型。
eg:
String a = "hello";
char * b = a.c_str();
6.Template知识点
template想要处理多个数据类型不同的变量的时候,可以这么定义:
Template <typename T,typename,P>
课堂总结:
有一个小组展示的时候展示形式是“提出问题-debug问题-解决问题”的形式,我印象非常深刻,形式上有可借鉴之处,他的思考也很有深度,不过他的问题我没怎么搞懂,私底下试了试好像也没出现他在课堂上演示的时候提出的问题,因此,我下次在看别人问题的时候应该拍下来,回去之后反复试试是不是真的有这么个Bug,然后自己去思考怎么解决。
[C++讨论课] 课堂记录(一)的更多相关文章
- Java学习笔记二--API课堂记录
JavaSE课堂记录(二) 第一节课 方法的重载:方法名相同,参数列表不同 方法的重写:方法名,参数列表相同 两同:方法名相同,参数列表相同 两小:访问权限小与等于父类,返回值类型小于等于父类(返回值 ...
- python学习第一课要点记录
写在要点之前的一段话,留给将来的自己:第一次参加编程的培训班,很兴奋很激动,之前都是自己在网上找免费的视频来看,然后跟着写一些课程中的代码,都是照着模子写,没有自己过多的思考.感觉这样学不好,除了多写 ...
- 潭州课堂25班:Ph201805201 WEB 之 页面编写 第三课 (课堂笔记)
index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- 潭州课堂25班:Ph201805201 WEB 之 页面编写 第二课 (课堂笔记)
index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- 潭州课堂25班:Ph201805201 django 项目 第一课 (课堂笔记)
一.Django 现状 1.Django开发前景 1.1 老师做过的项目 项目图展示: 1.2 Django的厉害之处 在python中,与web开发环境相关的包有13045个 ...
- 潭州课堂25班:Ph201805201 WEB 之 页面编写 第一课 (课堂笔记)
index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- python学习第二课要点记录
字典使用时,使用for k,v in items():要将字典转换为元组,因此效率较低,如果数据量较大,就不建议使用这样的形式获取key和value的值,而要使用 for item in dict: ...
- 潭州课堂25班:Ph201805201 爬虫基础 第一课 (课堂笔记)
爬虫的概念: 其实呢,爬虫更官方点的名字叫数据采集,英文一般称作spider,就是通过编程来全自动的从互联网上采集数据.比如说搜索引擎就是一种爬虫.爬虫需要做的就是模拟正常的网络请求,比如你在网站上点 ...
- 潭州课堂25班:Ph201805201 WEB 之 Ajax第八课 (课堂笔记)
js <——>jq <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
随机推荐
- 超级实用的Chrome插件
1.JSON-handle:浏览器前台访问后台,后台返回json,它帮你格式化 2.Page Ruler:帮你测量页面上任何位置的长宽高 3. Momentum:打开新的tab页就像打开了一个新的世界 ...
- [51nod] 1267 4个数和为0 暴力+二分
给出N个整数,你来判断一下是否能够选出4个数,他们的和为0,可以则输出"Yes",否则输出"No". Input 第1行,1个数N,N为数组的长度(4 < ...
- memcached 扩展安装(windows)
在脚本之家里下载扩展压缩包 https://www.jb51.net/softs/392873.html 安装扩展前得先安装memcached并启动 下载完扩展压缩包解压并找到对应自己php版本 复制 ...
- 自动化测试工具 Test Studio入门教程
Test Studio安装 可以到下载试用版 官网 http://www.telerik.com/teststudio , 装完以后需要装silverlight 安装好了,主界面是介个样子的 Test ...
- MySQL 5.7 Performance Schema 详解
refman mysql 5.7 MySQL Performance Schema 用于监视MySQL服务器,且运行时消耗很少的性能.Performance Schema 收集数据库服务器性能参数, ...
- 今天是 Java 诞生日,Java 24 岁了!
今天是 Java 诞生日,Java 今年 24 岁了,比栈长还年轻..还有得搞,别慌!作为一名Java语言的学习者,对Java的起源和发展有个大概的了解应是必要的. 1991年,Sun公司成立Gree ...
- ORA-01950:表空间“USERS”中无权限
ORA-01950:表空间“USERS”中无权限 解决方案: A)确认给用户授权了resource角色 B)取消限制 ALTER USER "HCCPMS" QUOTA UNLIM ...
- [题解](gcd/欧拉函数)luogu_P2568_GCD
求gcd(x,y)=p等价于求gcd(x/p,y/p)=1,转化为了n/p内互质的个数 所以欧拉函数,因为有序所以乘2,再特判一下只有在1,1情况下才会重复计算,所以每次都减一 数组开小一时爽,提交w ...
- Ionic中基于js的扩展(指令和服务)来实现各种效果
1.ion-header-bar ion-footer-bar ion-content align-title='left/ritght/center <body> <ion-hea ...
- Codeforces Round #566 (Div. 2) B. Plus from Picture
链接: https://codeforces.com/contest/1182/problem/B 题意: You have a given picture with size w×h. Determ ...