c++ 语言几个坑
#include <iostream>
int main(){
int i = 1;
switch (i){
case 1 :
int j ;
j = 1;
break;
case 2:
std::cout<<j;
}
}
switch 支持定义变量,且其他case 可见, 所以避免问题 ,case 应该用花括号包裹
#include <iostream> using namespace std; class Base
{ public:
Base() {} Base(bool arg)
{ foo(); // base42
} virtual void foo(int i = 42)
{ cout << "base" << i << endl;
}
}; class Derived : public Base
{ public:
Derived() {} Derived(bool arg) : Base(arg)
{ foo(); // derive12
} virtual void foo(int i = 12)
{ cout << "derived" << i << endl;
}
}; void test1()
{ Derived d; Base &b1 = d; Base b2 = d; b1.foo(); // derived42 b2.foo(); // base42
} void test2()
{ Base *b = new Derived(true); // base42 derived12 b->foo();
delete b;
} int main()
{ test1(); test2();
}
270da9dbe7e5:~ # ./a.out
derived42
base42
base42
derived12
derived42
虚函数的默认参数是静态绑定的,
c++ 语言几个坑的更多相关文章
- Go语言第一深坑:interface 与 nil 的比较
interface简介 Go 语言以简单易上手而著称,它的语法非常简单,熟悉 C++,Java 的开发者只需要很短的时间就可以掌握 Go 语言的基本用法. interface 是 Go 语言里所提供的 ...
- Go语言常见的坑
目录 1. 可变参数是空接口类型 2. 数组是值传递 3.map遍历是顺序不固定 4. 返回值被屏蔽 5.recover必须在defer函数中运行 6. main函数提前退出 7.通过Sleep来回避 ...
- go语言中的坑
package main; import ( "fmt" "time" "sync" ) //修改slice的坑 func add(s [] ...
- 被C语言操作符优先级坑了
今天有一个枚举的题目的代码是这样的: 重点在于maxXor这个函数的实现,枚举两个数字,其中maxr保存了最大值的 i 异或 j , 可是这个程序执行结果大大出乎意外-_-. 然后就把 i 异或 j ...
- 重新上手c语言的一些坑
c语言结构体不能声明函数,放几个函数指针倒是没问题 c语言结构体不能在声明时初始化 声明两个指针 int *a,*b; 或者typedef int* int_P int_P a,b; typedef要 ...
- [WIP]C语言 realloc的坑
创建: 2019/01/07 题外话,不知不觉又一年过去了,2019也要好好努力. 回到主题,在用动态循环数组实现queue的时候, 由于realloc的原因出现了一些莫名其妙的错误. 先开个题,晚点 ...
- Golang 入门系列(二)学习Go语言需要注意的坑
上一章节我们已经了解了 Go 环境的配置,不了解的,请查看前面的文章 https://www.cnblogs.com/zhangweizhong/p/9459945.html,本章节我们将学习 Go ...
- [Go] 开发 go web 项目,踩到的一些“坑”
注意:这些“坑”不是bug,只是自己当时没搞明白. 用到的框架为 Beego 1.字典 map 是“引用类型”,本身就是指针,作为参数传递时,直接传 map 变量名即可(不要传 map 变量指针). ...
- Bagging(R语言实现)—包外错误率,多样性测度
1. Bagging Bagging即套袋法,其算法过程如下: 从原始样本集中抽取训练集.每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本(在训练集中,有些样本可能被多次 ...
随机推荐
- The hierarchy of the type is inconsistent
原因:我看到有一个interface的java类里面import了一个没有用到的类,手贱,把这个接口里面引用了但是没有没有用到的类删掉了, 结果这个接口的子类用到了,统统报标题上的错误.只要把删掉的改 ...
- 剑指offer_12.31_Day_1
不用加减乘除做加法 题目描述 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 不用四则运算,必然是依靠位运算. 位运算包括,与,或,异或,取反,左移,右移. 分别为 ...
- linux中redis伪主从搭建
1.解压redis.tgz到usr/local/redis下 2.在redis/下执行 make 3.在redis/src/下执行 make install PREFIX=/usr/local/red ...
- XXE--XML外部实体注入漏洞
XXE漏洞原理 XXE漏洞全称XML External Entity Injection 即xml外部实体注入漏洞,XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部 ...
- PAT 2018 秋
A 1148 Werewolf - Simple Version 思路比较直接:模拟就行.因为需要序列号最小的两个狼人,所以以狼人为因变量进行模拟. #include <cstdio> # ...
- preg_match()//explode()// 输出函数//assert()//trim()
1.preg_match() 这是一个正则表达式匹配的函数,其用法如下: 查找文本字符串"php": <?php //模式分隔符后的"i"标记这是一个大小 ...
- vue中使用elementUI中表格的v宽度,字体大小
<el-table :row-style="{height:'20px'}" :cell-style="{padding:'0px'}" style=&q ...
- JavaScript 闭包究竟是什么JavaScript 闭包究竟是什么
用JavaScript一年多了,闭包总是让人二丈和尚摸不着头脑.陆陆续续接触了一些闭包的知识,也犯过几次因为不理解闭包导致的错误,一年多了资料也看了一些,但还是不是非常明白,最近偶然看了一下 jQue ...
- Xcode中SVN不能提交.a及其他文件
Xcode默认忽略的.a 文件.所以无法提交到svn服务器,但是很多第三方的库都有.a文件.所以还是必须提交到服务器. 搜索了一下解决方案: http://wpt205.blog.163.com/bl ...
- [Algo] 646. Store Number Of Nodes In Left Subtree
Given a binary tree, count the number of nodes in each node’s left subtree, and store it in the numN ...