c++上课笔记

在C++中若使用全局变量可以在变量前加::

eg:

#include <iostream>

using namespcae std;

int x;

int main(){

        int x=1;

        cout<<"local x "<<x<<endl;

        cout<<"global x "<<::x<<endl;

        return 0;

}

不带参数的宏替换

const double pi=3.1415926

#define pi 3.14

带参数的宏替换

inline double fun(a,b) {return a+b;} 

#define MIX(a,b) ((a)*(b) + (b))

常对象

const 类名 对象名

常对象的构造函数是要用带形参复制,而不是在花括号内赋值

常数据成员

常成员函数:可以用来调用输出数据成员,但是不能修改

如果对象中一些数据要只读,那就要用const修饰常数据成员

如果所有成员数据都要只读,那可以用const修饰对象,但这个时候要用const修饰常成员函数,否则不能调用非常成员函数

C++中,类的数据成员加上mutable后,修饰为const的成员函数,就可以修改它了 。

常指针

1.指向对象的常指针

Student stud1(10, 78.5);
Student* const p = &stud1;   //不能修改常指针,常指针在程序运行中始终指向一个对象,常指针还不能指向常对象    这个是指向对象

 2.指向常对象的指针

const Student stud1(10, 78.5);
const Student *p = &stud1;

静态成员函数

用静态成员函数只能直接访问静态成员,不能直接访问非静态成员

静态成员函数定义:

static 类型 成员函数(形参表){...}

友元

通过友元访问别的类的私有成员,友元不是成员函数,不属于类

破坏封装性,尽量少使用

friend 类型 类1::成员函数 //这种是在一个类中声明一个友元函数,可以在这个类中调用别的类成员

friend 类型 函数y(类2 &对象)    //这种可以用普通函数输出类的数据成员

class Time{

public:

        Time(int a,int b):x(a),y(b){}

        friend void display(Time &){}   //通过这个友元函数,可以在外部写一个函数 也可以调用类内的数据成员

        friend void Date::display(Date &){}   //这个就是调用别的类的成员函数

private:

        int x;int y;

}

void display(Time time){  //这个函数是全局的依然可以调用类内的private数据 就是依靠友元

        cout<<time.x<<" "<<time.y;

}

猜你喜欢

转载自blog.csdn.net/weixin_62705892/article/details/127052226