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. 2019-9-19:渗透测试,HTML基础学习,html绘制表格

    1,受理员业务统计表 效果图: 代码: <!DOCTYPE html><html><head> <title>表格1</title>< ...

  2. 新闻实时分析系统 基于IDEA环境下的Spark2.X程序开发

    1.Windows开发环境配置与安装 下载IDEA并安装,可以百度一下免费文档. 2.IDEA Maven工程创建与配置 1)配置maven 2)新建Project项目 3)选择maven骨架 4)创 ...

  3. Oracle 分区表管理之组合分区(分区索引失效与性能比较)

    整体结构如下: Oracle  分区表管理之组合分区(分区索引失效与性能比较) 虽然老早就使用了分区表,终于有时间写有关分区表的内容:不是所有的场景数据量变大需要用到分区表,一般单表数据超过2g可以考 ...

  4. 【Android - 控件】之MD - Snackbar的使用

    Snackbar 是 Android 5.0 新特性——Material Design 中的一个控件,用来代替 Toast ,Snackbar与Toast的主要区别是:Snackbar可以滑动退出,也 ...

  5. 【JavaEE】之MyBatis的ParameterType的使用

    在MyBatis的Mapper.xml文件中,参数的表示方法有两种:一种是使用 “#{XXX}” 的方式表示的,另一种是使用 “${XXX}” 的方式表示的.今天来介绍以下这两种方式的不同之处. 1. ...

  6. 关于servlet报错和jsp中报关于servlet的错误

    servlet-api是对servlet的支持,如果你导入别人的项目后出现servlet中的导包处出现关于javax.servlet.的错误,那么就是缺少这个包了.还有对jsp页面中的报错的支持. 下 ...

  7. Select下拉框onchange事件获取option的value值

    首先方法中使用到了jqury,首先导入jqury的插件: 如果jqury的小插件没有的话,就去网上下载一个吧,jqury比原生的js使用起来方便了很多,这里也提供一个我的jqury的下载地址: jqu ...

  8. Spring Cloud Gateway - 路由法则

    1. After Route Predicate Factory 输入一个参数:时间,匹配该时间之后的请求,示例配置: spring: cloud: gateway: routes: - id: af ...

  9. Netty学习——服务器端代码和客户端代码 原理详解

    服务器端代码和客户端代码 原理详解:(用到的API) 0.Socket 连接服务器端的套接字 1.TcompactProtocol   协议层2.TFrameTransport   传输层3.THsh ...

  10. 如何在Android手机上进行自动化测试(上)

    版权声明:允许转载,但转载必须保留原链接:请勿用作商业或者非法用途 前言 通过阅读本节教程,你将了解到以下内容: 如何在脚本代码中.运行脚本时指定手机 如何填写--device Android:/// ...