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++--语言本身的更多相关文章

  1. C语言本身并不提供输入输出语句

    C语言本身并不提供输入输出语句,输入和输出操作是由函数来实现的.在C标准函数库中提供了一些输入输出函数,例如,printf函数和scanf函数.在使用他们时,千万不要误认为他们是C语言提供的“输入输出 ...

  2. c++ 11开始语言本身和标准库支持并发编程

    c++ 11开始语言本身和标准库支持并发编程,意味着真正要到编译器从语言和标准库层面开始稳定,估计得到17标准出来.14稳定之后的事情了,根据历史经验,新特性的引入到稳定被广泛采用至少要一个大版本的跨 ...

  3. php性能优化三(PHP语言本身)

    0.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册 ...

  4. 用Go语言做产品半年的一些感觉

    用Go语言做产品刚好半年,有一些感觉跟大家说道说道. 在使用Go之前,我常常想象,无法使用先进的Debug工具会对工作进度造成多么巨大的影响.甚至在Visual Studio的娇惯下认为,不能调试基本 ...

  5. 别语言之争了,最牛逼的语言不是.NET,也不是JAVA!

    谁都不用说,博客园明显的偏.NET,C#的讨论一出现,推荐讨论热火朝天,而发点JAVA的东西,应者寥寥.一旦有出现两大派系的竞争,那绝对是头条.每天都看,早就麻木了. 研二的我浸淫.NET已经三四年, ...

  6. Linus:C++是一种糟糕的语言

    本文内容摘自http://blog.csdn.net/turingbook/article/details/1775488 C++是一种糟糕的(horrible)语言.而且因为有大量不够标准的程序员在 ...

  7. C 语言学习 第六次作业总结

    本次作业,同学们开始学习函数.通过之前和同学们的沟通,似乎同学们在这里遇到的问题比较多.下面,我先帮同学们整理下函数的相关知识点. 什么是函数 首先,需要明确的是,什么是函数.所谓函数,也就是一段有名 ...

  8. C语言栈调用机制初探

    学习linux离不开c语言,也离不开汇编,二者之间的相互调用在源代码中几乎随处可见.所以必须清楚地理解c语言背后的汇编结果才能更好地读懂linux中相关的代码.否则会有很多疑惑,比如在head.s中会 ...

  9. 《C程序设计语言》- 字符输入和输出

    书籍介绍: 本书是机械工业出版社的第2版·新版,作者两位,其中一位是C语言之父Dennis Ritchie,另一位是Brian Kernighan,也是一位牛人. 本书的目的是帮助读者学习如何用C语言 ...

随机推荐

  1. 树莓派SSH篇

    开启好树莓派后发现一个问题,怎么才可以输入进树莓派里面呢? 一.你需要和我一样准备一个无线(有线)键盘

  2. 常见HTTP请求头和响应头

    2. 常用的HTTP请求头 协议头 说明 示例 状态 Accept 可接受的响应内容类型(Content-Types). Accept: text/plain 固定 Accept-Charset 可接 ...

  3. 【Android - IPC】之Serializable和Parcelable序列化

    1.序列化的目的 (1)永久的保存对象数据(将对象数据保存到文件或磁盘中): (2)通过序列化操作将对象数据在网络上进行传输(由于网络传输是以字节流的方式对数据进行传输的,因此序列化的目的是将对象数据 ...

  4. CSS 使用id属性的规则

    html中的id属性是什么?本篇文章给大家带来的内容是介绍html中的id属性,让大家了解id属性的使用方法,希望对大家有所帮助. html的id属性是什么? html的id属性其实就是一个HTML元 ...

  5. npm切换成淘宝镜像源

    0-前言 我们都知道node下载第三方依赖包是从国外服务器下载,不是速度奇慢就是下载异常,切换成国内的淘宝镜像源很有必要: 1-切换方法 $ npm config set registry https ...

  6. 谈谈.net对象生命周期

     不用程序员操心的堆 — 托管堆         程序在计算机上跑着,就难免会占用内存资源来存储在程序运行过程中的数据,我们按照内存资源的存取方式将内存划分为堆内存和栈内存.    栈内存,通常使用的 ...

  7. VMware密钥

    UG5J2-0ME12-M89WY-NPWXX-WQH88 GA590-86Y05-4806Y-X4PEE-ZV8E0 YA18K-0WY8P-H85DY-L4NZG-X7RAD UA5DR-2ZD4 ...

  8. OC循环方法推荐-块循环遍历(比for循环好用)

    最近在看一本书<Effective OC 2.0>,今天看到有个tip是OC适中循环各自优劣性,作者最终推荐此块循环. 阅读时思考了下块循环是否方便实现内部循环终止外部循环的问题. 于是做 ...

  9. 在modelarts上部署mask-rcnn模型

    最近老山完成了对mask-rcnn在modelarts上的部署,部署模型来自于这个项目.部署的过程大体和我的上篇文章使用modelarts部署bert命名实体识别模型相似,许多细节也不在赘述.这篇文章 ...

  10. Too many open files的四种解决办法

    [摘要] Too many open files有四种可能:一 单个进程打开文件句柄数过多,二 操作系统打开的文件句柄数过多,三 systemd对该进程进行了限制,四 inotify达到上限. 领导见 ...