C++学习笔记——(一)与C区别、常量、引用、函数重载、默认形参、类初探

注:编码工具是CLion+Cygwin64

目录

与C区别

常量

C语言

C++

引用与常量引用

通过引用方式交换两个变量值

常量引用

函数重载

C语言

C++

默认形参

无形参变量名的特殊写法

类初探

C++的布尔类型


与C区别

C语言是面向过程的,C++是面向对象的。

C语言环境不能运行C++代码,C++环境可以运行C代码。

C语言的常量是伪常量,C++的常量是真常量。

C语言不允许函数重载,C++允许函数重载。

常量

C语言

        可以通过指针的间接修改常量的值。

#include <stdio.h>

int main(){

    const int num = 100;
    printf("num = %d\n", num);
//    num = 10000; // 编译不通过
    int * num_p = &num;
    *num_p = 10000;
    printf("num = %d\n", num);

    return 0;
}

输出:

num = 100
num = 10000

C++

#include<stdio.h>

int main() {

    const int num = 100;
    printf("num = %d\n", num);
//    num = 10000; // 编译不通过
//    int *num_p = &num;// 编译不通过

    return 0;
}

输出:

num = 100

引用与常量引用

        引用:是内存地址的别名。通过 数据类型& 的格式定义。

通过引用方式交换两个变量值

#include <iostream> // C++标准IO

using namespace std;// 命名空间

void swap(int &a, int &b){
    int tmp = a;
    a = b;
    b = tmp;
}

int main(){
    int num1 = 99;
    int num2 = 100;
    cout << "num1 = " << num1 << ", num2 = " << num2 << endl;
    /**
     * cout:C++输出
     * << 运算符重载
     * endl 相当于 \n
     */
    swap(num1, num2);
    cout << "num1 = " << num1 << ", num2 = " << num2 << endl;

    return 0;
}

输出:

num1 = 99, num2 = 100
num1 = 100, num2 = 99

常量引用

        当只需要展示数据而不允许修改数据的时候,使用常量引用。

#include <iostream> 

using namespace std;

void show(const int & a){// 用对象更能体现常量引用的效果
//    a = 10000;// 编译不通过
    cout << "a = " << a << endl;
}

int main(){
    show(100);
    return 0;
}

输出:

a = 100

函数重载

C语言

#include <stdio.h>

int add(int a, int b){
    return a + b;
}

// 编译报错
//int add(int a, int b, int c){
//    return a + b + c;
//}

int main(){

    return 0;
}

C++

#include <iostream>

using namespace std;

int add(int a, int b){
    return a + b;
}

int add(int a, int b, int c){
    return a + b + c;
}

int main(){
    int num = 99, num2 = 100, num3 = 10000;
    cout << num << " + " << num2 << " = " << add(num, num2) << endl;
    cout << num << " + " << num2 << " + " << num3 << " = " << add(num, num2, num3) << endl;
    return 0;
}

输出:

99 + 100 = 199
99 + 100 + 10000 = 10199

默认形参

#include <iostream>

using namespace std;

int add(int a = 3, int b = 99){
    return a + b;
}

int main(){
    int num = 99, num2 = 100;
    cout << add() << endl;
    cout << add(num) << endl;
    cout << num << " + " << num2 << " = " << add(num, num2) << endl;
    return 0;
}

输出:

102
198
99 + 100 = 199

无形参变量名的特殊写法

        方法声明的部分参数只有数据类型,没有变量名,C++源码里有这种写法,可能为了以后扩展提前占位。

#include <iostream>

using namespace std;

void log(char * text, int, int){
    cout << "text = " << text << endl;
}

int main(){
    log("日志内容", 1, 1);
    return 0;
}

输出:

text = 日志内容

类初探

        类的标准定义方法:

                同时定义头文件和实现文件。

                头文件中只定义变量和函数声明。

                实现文件中存放类的函数实现。

头文件:

class Student{
private:
    char * name;
    int age;
public:
    void setName(char* name);
    void setAge(int age);
    char * getName();
    int getAge();
};

实现文件:

#include "Student.h"

void Student::setName(char *name) {
    this->name = name;
}

void Student::setAge(int age) {
    this->age = age;
}

char * Student::getName() {
    return this->name;
}

int Student::getAge() {
    return this->age;
}

对象创建

        有静态和动态两种开辟内存方式创建。

        动态创建需要用关键字new,释放需要手动调用delete。new和delete成对。类似malloc和free。

#include <iostream>
#include "Student.h"
using namespace std;

int main(){
    Student stu;// 静态开辟内存方式创建,函数执行完会自动释放内存
    stu.setName("张无忌");
    stu.setAge(18);
    cout << stu.getName() << ", " << stu.getAge() << endl;

    // 带不带()都可以 动态开辟内存方式创建,要手动调用delete释放内存
    Student * stu2 = new Student;
    stu2->setName("ss");
    stu2->setAge(14);
    cout << stu.getName() << ", " << stu2->getAge() << endl;
    if(stu2)
    {
        delete stu2;// 手动释放动态开辟的内存
        stu2 = NULL;
    }
    return 0;
}

输出:

张无忌, 18
张无忌, 14

C++的布尔类型

        C语言的非0即true,在C++仍然适用。

        同时C++有自己的布尔类型,用bool声明。

        字面量true打印为1,false打印为0。

#include <iostream>

using namespace std;

int main(){

    bool flag = true;
    cout << "flag = " << flag << endl;
    cout << false << endl;
    if(239847){
        cout << "True" << endl;
    }
    if(!0){
        cout << "True" << endl;
    }
    if(-384.23)
    {
        cout << "True" << endl;
    }
    return 0;
}

输出:

flag = 1
0
True
True
True

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值