c++--语言本身
c++
- 面向对象概念(cout cin 类、对象 面向对象和面向过程求解问题)
- 易犯错误模型(引入成员函数的必要性)
- C语言和C++语言的关系
- namespace 定义(嵌套)、使用、标准命名空间std、iostream中没有引入std
- 实用性增强(变量定义)、全局变量定义检查(严格)、变量类型检查严格、所有变量和函数定义必须有类型
- struct关键字(c中不是新类型),与class功能相同
- 类型加强 bool 1个字节,但只有true和false
- c++中三目运算符 返回变量自身 c中返回的是变量的值 (可做左值)
初学c++有点小激动
- 内联函数(请求、函数调用处插入函数体,压栈,跳转和返回的开销,与带参数的宏区别)
- 默认参数(形参有一个默认值,有一个是默认参数,则右边的均是默认参数才行)
- 函数占位参数 运算符重载后置++ int func(int a, int b, int ) 在函数体内部无法使用占位参数
- C++对C的函数扩展
- 内联函数(请求、函数调用处插入函数体,压栈,跳转和返回的开销,与带参数的宏区别)
- 默认参数(形参有一个默认值,有一个是默认参数,则右边的均是默认参数才行)
- 函数占位参数 运算符重载后置++ int func(int a, int b, int ) 在函数体内部无法使用占位参数
- 默认参数和占位参数在一起 int func(int a, int b, int =0)
- 函数重载
- 概念(函数名称一样 函数参数不一样)
- 函数返回值不是判断标准
- 调用规则(按照名称、个数、类型)
- 函数重载遇上函数默认参数,调用是二义性
- 函数指针语法:定义函数类型 定义函数指针类型 定义函数指针变量
- 函数重载和函数指针在一起
- 默认参数和占位参数在一起 int func(int a, int b, int =0)
- 函数重载
- 概念(函数名称一样 函数参数不一样)
- 函数返回值不是判断标准
- 调用规则(按照名称、个数、类型)
- 函数重载遇上函数默认参数,调用是二义性
- 函数指针语法:定义函数类型 定义函数指针类型 定义函数指针变量
- 函数重载和函数指针在一起
命名空间
#include <iostream>
using namespace std;
iostream 提供一个叫命名空间的东西, 标准的命名空间是 std
#include <iostream>
//方式二:
#if 0
using std::cout; //声明命名空间中的一个变量
using std::endl;
using std::cin;
#endif
//方式三
using namespace std;
int main(void)
{
int a = 0;
#if 0
//方式一:
std::cout << "nihao shijie" << std::endl;
std::cout << "nihuai shijie" << std::endl;
#endif
cout << "nihuai shijie" << endl;
cin >> a;
return 0;
}
命名空间的定义
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
//定义一个命名空间
namespace spaccA {
int g_a = 10;
}
namespace spaceB {
int a = 20;
namespace spaceC {
struct teacher
{
int id;
char name[64];
};
}
namespace spaceD {
struct teacher
{
int id;
char name[64];
};
}
using namespace spaceC;
}
int main(void)
{
//using spaccA::g_a;
using namespace spaccA;
int a = 20;
cout << g_a << endl;
//spaceB::spaceC::teacher t1;
//using spaceB::spaceC::teacher;
//teacher t1;
//using namespace spaceB::spaceC;
//spaceB::spaceC::teacher t1;
using namespace spaceB;
teacher t1;
t1.id = 10;
//spaceB::spaceD::teacher t2;
//t2.id = 20;
return 0;
}
c++语言增强的地方
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
//c++语言对全局变量的定义检测能力增强了
int g_val; //bss段
//int g_val = 20;
struct student
{
char name[64];
int id;
};
void test1()
{
//定义一个变量 可以随用岁定义
int i = 0;
for (int i = 0; i < 10; i++)
{
}
int b = 20;
cout << "b " << b << endl;
}
void test2()
{
student s1;
s1.id = 20;
}
int foo()
{
return 10;
}
int g(int a)
{
return 10;
}
//bool类型
void test3()
{
//true 1 false 0 只能取这两个值
bool flag = true;
flag = false;
flag = true;
cout << "flag(true)" << flag << endl;
flag = false;
cout << "flag(true)" << flag << endl;
flag = -20;
cout << "flag(true)" << flag << endl;
cout << sizeof(flag) << endl;
}
void test4()
{
int a = 10;
int b = 20;
int c = 0;
c = (a < b) ? a : b;
cout << c << endl;
//! 三目运算符 可以当左值。
((a < b) ? a : b) = 50;
//a = 50;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
#define A 20
// const int f = 20;
}
void test5()
{
const int a = 10; //a 是真正的常量
int *p = (int*)&a;
*p = 20;//改变的是临时开辟的temp变量
cout << "a =" << a << endl;
cout << "*p=" << *p << endl;
int array[a] = { 0 };
cout << A << endl;//20
//cout << 10 << endl;
// cout << f << endl;
}
enum season
{
SPR = 0,
SUM,
AUT,
WIN
};
void test6()
{
enum season s = AUT;
if (s == AUT) {
cout<<"hello";
}
}
int main(void)
{
//test2();
//test3();
//g(10, 20, 30);
test4();
test5();
test6();
return 0;
}
c++语言增强的地方
#include <stdio.h>
int g_val; //bssśÎ
int g_val = 20;//data
struct student
{
char name[64];
int id;
};
foo()
{
return 10;
}
int g(int a)
{
return 10;
}
void test4()
{
int a = 10;
int b = 20;
int c = 0;
//×óÖľ ÓŇÖľ
c = a < b ? a : b;
printf("c = %d\n", c);
*(a < b ? &a : &b )= 50;
//10
//10 = 50;
printf("a = %d\n", a);
}
void test5()
{
const int a = 10;
//int array[a] = { 0 };
int *p = &a;//一引用a的地址,并未创造新的空间,p指向a
*p = 70;
printf("a = %d\n", a);
}
enum season
{
SPR = 0,
SUM,
AUT,
WIN,
WIN1,
WIN2,
WIN64,
};
void test6()
{
enum season s = 2;
s = 64;
if (s == 2) {
//
}
}
int main(void)
{
int a = 10;
int b = 20;
struct student s1;
s1.id = 20;
test4();
//,,,
printf("%d\n", g_val);
//g(10,20,30,40,50);
printf("-----------------\n");
test5();
}
c++--语言本身的更多相关文章
- C语言本身并不提供输入输出语句
C语言本身并不提供输入输出语句,输入和输出操作是由函数来实现的.在C标准函数库中提供了一些输入输出函数,例如,printf函数和scanf函数.在使用他们时,千万不要误认为他们是C语言提供的“输入输出 ...
- c++ 11开始语言本身和标准库支持并发编程
c++ 11开始语言本身和标准库支持并发编程,意味着真正要到编译器从语言和标准库层面开始稳定,估计得到17标准出来.14稳定之后的事情了,根据历史经验,新特性的引入到稳定被广泛采用至少要一个大版本的跨 ...
- php性能优化三(PHP语言本身)
0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册 ...
- 用Go语言做产品半年的一些感觉
用Go语言做产品刚好半年,有一些感觉跟大家说道说道. 在使用Go之前,我常常想象,无法使用先进的Debug工具会对工作进度造成多么巨大的影响.甚至在Visual Studio的娇惯下认为,不能调试基本 ...
- 别语言之争了,最牛逼的语言不是.NET,也不是JAVA!
谁都不用说,博客园明显的偏.NET,C#的讨论一出现,推荐讨论热火朝天,而发点JAVA的东西,应者寥寥.一旦有出现两大派系的竞争,那绝对是头条.每天都看,早就麻木了. 研二的我浸淫.NET已经三四年, ...
- Linus:C++是一种糟糕的语言
本文内容摘自http://blog.csdn.net/turingbook/article/details/1775488 C++是一种糟糕的(horrible)语言.而且因为有大量不够标准的程序员在 ...
- C 语言学习 第六次作业总结
本次作业,同学们开始学习函数.通过之前和同学们的沟通,似乎同学们在这里遇到的问题比较多.下面,我先帮同学们整理下函数的相关知识点. 什么是函数 首先,需要明确的是,什么是函数.所谓函数,也就是一段有名 ...
- C语言栈调用机制初探
学习linux离不开c语言,也离不开汇编,二者之间的相互调用在源代码中几乎随处可见.所以必须清楚地理解c语言背后的汇编结果才能更好地读懂linux中相关的代码.否则会有很多疑惑,比如在head.s中会 ...
- 《C程序设计语言》- 字符输入和输出
书籍介绍: 本书是机械工业出版社的第2版·新版,作者两位,其中一位是C语言之父Dennis Ritchie,另一位是Brian Kernighan,也是一位牛人. 本书的目的是帮助读者学习如何用C语言 ...
随机推荐
- 2019-9-9:渗透测试,docker下载dvwa,使用报错型sql注入dvwa
docker下载dvwa镜像,报错型注入dvwa,low级 一,安装并配置docker 1,更新源,apt-get update && apt-get upgrade &&am ...
- 【集训Day1 测试】【USACO】照相
照相(fairphoto) [题目描述] 有N 头奶牛站在一条数轴上,第 i 头奶牛的位置是 Pi,奶牛不会重叠站在同一个位置, 第i 头奶牛的颜色是 Ci,其中 Ci 要么是字符'G'要么是字符'H ...
- Linux -- 进程间通信几种方式的总结
管道 优点 管道文件不占磁盘空间,打开管道时在内存中分配空间: 管道读端会在读取完管道内数据后自动进入阻塞,直到写端再次写入数据: 缺点 管道是半双工的,数据只能从一个方向上流动: 管道大小 PIPE ...
- java中sleep()和wait()区别
1,sleep方法是Thread类的静态方法,wait()是Object超类的成员方法 2,sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时 ...
- JS的引用顺序真的灰常重要
JS的引用一定要记得顺序,不然常常会被小小的问题卡住很久.
- Xtrabackup 安装 参数详解
目录 安装 常用参数详解 innobackupex 相关参数 xtrabackup相关参数 安装 继Xtrabackup 介绍,本次来讲解安装和使用. Xtrabackup的RPM包下载地址: 系统版 ...
- 【SSL1455&1456】 电子老鼠闯迷宫 & 骑士游行
考点概况: 广搜板子 题面: \[\Large\text{电子老鼠闯迷宫}\] \[Time~Limit:1000MS~~Memory~Limit:65536K\] Description 如下图12 ...
- 从入门到入土:Lambda完整学习指南,包教包会!
什么是Lambda表达式 Lambda表达式是Java SE 8中一个重要的新特性.lambda表达式允许你通过表达式来代替功能接口.lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使 ...
- 利用python实现dll依赖关系导出
#说明:遍历rootdir目录下所有dll,导出每个dll依赖的dll信息到dstdir目录下 # 配合NotePad++打开所有txt,搜索,可快速定位到某dll被依赖的所有dll文件 import ...
- luogu P1972 [SDOI2009]HH的项链 |树状数组 或 莫队
题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链变得越来越长. ...