• 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
    ", c);
    
    	*(a < b ? &a : &b )= 50;
    	//10
    	//10 = 50;
    	printf("a = %d
    ", a);
    }
    
    void test5()
    {
    	const int a = 10;
    	//int array[a] = { 0 };
    
    	int *p = &a;//一引用a的地址,并未创造新的空间,p指向a
    
    	*p = 70;
    
    	printf("a = %d
    ", 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
    ", g_val);
    
    	//g(10,20,30,40,50);
    	printf("-----------------
    ");
    	test5();
    }
    
  • 相关阅读:
    python编程学习进度七
    python编程学习进度六
    SOA——2020.5.15
    代码大全001/
    Refined Architecture阶段——细化架构
    架构即未来003(摘自网络)
    我对外包公司的小小看法
    架构即未来002
    每日日报
    架构即未来阅读笔记001
  • 原文地址:https://www.cnblogs.com/ygjzs/p/12073561.html
Copyright © 2020-2023  润新知