美文网首页
C++基础笔记01

C++基础笔记01

作者: 尽欢呀尽欢 | 来源:发表于2015-05-31 13:47 被阅读70次

强类型语言,类型检查严格
支持面向对象,泛型,异常(打游戏可不能异常),运算符重载

C++文件后缀可以是 .cpp,.cc,.c等

//includeC++本身的头文件时 使用<不加.h>
#include <iostream>
//C 的头文件  可以加.h  但是C++不推荐
#include <stdio.h>
//推荐 使用C++重写的头文件 把.h去掉 在前面加c
#include <cstdio>
//如果要 include 我们自己写的头文件时 使用 "" 加.h
#include "MyClass.h"

cout的是一个对象 通过<<输出运算符 进行输出 可以连续输出,endl是换行。
cin/cout代替 scanf,cout
std是命名空间,::是域运算符

std::cout << "Hello, World!\n" << 123213 << 3.4324 << 'a'<< std::endl;
std::cin >> x;
//  相当于std::cin.operator>>(x);对象调方法,可省,略写如上

命名空间

//使用指令后的所有std命名空间下的东西 访问时都可以不用在加 std了
using namespace std;
//变量和函数
namespace Hero {
    const char *name = "英雄";
    void show() {
        std::cout << "英雄出现了" << std::endl;
    }
}
//命名空间可以分开写
namespace Hero {
    int a = 200;
}
//使用声明
using std::cout;

//C++会把所用东西都放在命名空间下,如果我们自己没有写命名空间,默认放在一个没有名字的命名空间下
    cout << ::name << endl;

结构

//可以放函数
struct Date {
    int year;
    int month;
    int day;
    void show() {
        cout << year << "-" << month << "-" << day << endl;
    }
};

联合就是在内存中都占同一片地址

union MyUnion {
    int x;
    int y;
    double d;
    char cs[4];
};
//可以有匿名联合
union {
    int x;
    int y;
};

枚举:不再只是普通的int

//注意用枚举提高代码可读性
enum HeroState{
    Stand,
    Move,
    Attack,
    Die
};

C++中bool是数据类型,本质也是int,c中是宏定义

运算符可以用其他奇怪的关键字替换

注意值传递和地址传递

C++的参数默认值 必须从右向左给 右边的参数有了默认值左边的参数才可以给默认值

内联函数

//inline 内联函数 执行效率要比普通的函数高
//内联函数执行的时候不会在栈中开辟空间,而是直接把内容拷贝到得调用的方法中
//inline只是向编译器发送请求,希望成为内联函数,编译器会做检查,如果内容少,逻辑简单就会同意申请,如果拒绝了,这个函数调用还和普通函数一样,  同常情况下,如果是个递归函数,肯定会拒绝
inline void print(int x) {
    int a = 200;
    int b = 300;
    cout << x + a + b << endl;
}

哑元函数

//冲突时多一个参数,没有参数名,这样就是哑元
void print(int x, int) {
    cout << x << endl;
}

int &r = x;
引用实际是别名,反正r就是x,都是同一个东西,地址都一样。其实写成
int& r=x;更好理解
r是个int类型的引用。
引用是一辈子的,不可以改地址了

  // 声明引用必须初始化
//如果要引用一个常量 必须使用常引用
    const int &r3 = 500;
//    r3 = 500;

弄清值传递x=y、地址传递 int* p、引用传递&x=y
*是寻址运算符也是指针
&是取地址符也是引用

交换两数的多种方法swap

//交换:用引用
void swap(int &x, int &y) {
    cout << x << ' ' << y << endl;
    int t = x;
    x = y;
    y = t;
    cout << x << ' ' << y << endl;
}

//交换  两数交换不使用第三个变量
void swap2(int &x, int &y) {
    x = x + y;
    y = x - y;
    x = x - y;
}

//按位异或交换 不使用第三个变量
void swap3(int &x, int &y) {
    x = x ^ y;
    y = x ^ y;
    x = x ^ y;
}

//永远不要返回局部变量的引用

int& fc() {
    int x = 100;
    return x; 
}

// static_cast<类型>()
// 转换时做静态检查,即在编译时进行
// void*到其他指针的转换

double d = 3.1415926;
// int x = d; //隐式类型转换
 int x = static_cast<int>(d);
//    reinterprect_cast<类型>()
//    允许强转任何类型的指针
//    把整数强转成指针,指针强转成整数
 double *pd = reinterpret_cast<double*>(pl);
//    const_cast<类型>()
//    去掉cv限制
 volatile const int a = 100;//值已改但编译器自作聪明,volatile 易挥发的
提醒编译器还是再去内存中取值了。
 int *pa = const_cast<int *>(&a); //const int *
 *pa = 200;

//获取成员变量地址用 Struct::
&Date::year;
this指针,隐式地传入当前对象

相关文章

  • C++基础笔记01

    强类型语言,类型检查严格支持面向对象,泛型,异常(打游戏可不能异常),运算符重载 C++文件后缀可以是 .cpp,...

  • 《Effevtive c++ 》学习笔记

    《Effective c++》 笔记 c:说到底c++仍是以c为基础 object-Oriented C++。 这...

  • C++ 笔记 - 基础语法篇

    C++ 笔记 - 基础语法篇
    this 指针 在 C++ 中,每一个对象都能通过...

  • 《C++ Primer》读书笔记

    前言 把《C++ Primer》读薄系列笔记全集。 目录 第I部分:C++基础 开始学习C++ 变量和基本类型 字...

  • 《Effective C++》学习笔记

    让自己习惯C++ 条款01:视C++为一个语言联邦 C++可视为: C:以C为基础。 面向对象的C++:添加面向对...

  • C++基础笔记

    基本语法 “#include”预处理指令 引入某个文件的作用“#include”引入自己创建的要加入双引号 并且加...

  • 姿势结构

    姿势结构(更新至2018年11月09日) Java基础 C++基础 数据结构 LeetCode简单题目 01两数之...

  • 《大学专业生涯 计划书单》

    1、基础中的基础 →C++ 《C++Primer》 《EffectiveC++》 《Inside the C++ ...

  • C++学习基础笔记1 - 关于进制

    C++学习基础笔记1 - 关于进制 最近公司业务开始空闲下来,无聊之中,想把几年没使用过的C++拾起来,发现完全跟...

  • C++基础一01

    一、C++语言概述 1 历史背景 1)C++的江湖地位java、C、C++、python、C# 2)C++之父:B...

网友评论

      本文标题:C++基础笔记01

      本文链接:https://www.haomeiwen.com/subject/abarqttx.html