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语言 ...
随机推荐
- 树莓派SSH篇
开启好树莓派后发现一个问题,怎么才可以输入进树莓派里面呢? 一.你需要和我一样准备一个无线(有线)键盘
- 常见HTTP请求头和响应头
2. 常用的HTTP请求头 协议头 说明 示例 状态 Accept 可接受的响应内容类型(Content-Types). Accept: text/plain 固定 Accept-Charset 可接 ...
- 【Android - IPC】之Serializable和Parcelable序列化
1.序列化的目的 (1)永久的保存对象数据(将对象数据保存到文件或磁盘中): (2)通过序列化操作将对象数据在网络上进行传输(由于网络传输是以字节流的方式对数据进行传输的,因此序列化的目的是将对象数据 ...
- CSS 使用id属性的规则
html中的id属性是什么?本篇文章给大家带来的内容是介绍html中的id属性,让大家了解id属性的使用方法,希望对大家有所帮助. html的id属性是什么? html的id属性其实就是一个HTML元 ...
- npm切换成淘宝镜像源
0-前言 我们都知道node下载第三方依赖包是从国外服务器下载,不是速度奇慢就是下载异常,切换成国内的淘宝镜像源很有必要: 1-切换方法 $ npm config set registry https ...
- 谈谈.net对象生命周期
不用程序员操心的堆 — 托管堆 程序在计算机上跑着,就难免会占用内存资源来存储在程序运行过程中的数据,我们按照内存资源的存取方式将内存划分为堆内存和栈内存. 栈内存,通常使用的 ...
- VMware密钥
UG5J2-0ME12-M89WY-NPWXX-WQH88 GA590-86Y05-4806Y-X4PEE-ZV8E0 YA18K-0WY8P-H85DY-L4NZG-X7RAD UA5DR-2ZD4 ...
- OC循环方法推荐-块循环遍历(比for循环好用)
最近在看一本书<Effective OC 2.0>,今天看到有个tip是OC适中循环各自优劣性,作者最终推荐此块循环. 阅读时思考了下块循环是否方便实现内部循环终止外部循环的问题. 于是做 ...
- 在modelarts上部署mask-rcnn模型
最近老山完成了对mask-rcnn在modelarts上的部署,部署模型来自于这个项目.部署的过程大体和我的上篇文章使用modelarts部署bert命名实体识别模型相似,许多细节也不在赘述.这篇文章 ...
- Too many open files的四种解决办法
[摘要] Too many open files有四种可能:一 单个进程打开文件句柄数过多,二 操作系统打开的文件句柄数过多,三 systemd对该进程进行了限制,四 inotify达到上限. 领导见 ...