类和对象的概念

类的构建和使用中描述了部分类和对象的概念,例如构造/析构函数,类函数,下面介绍其他几种概念。

 

访问修饰符

访问修饰符有:public、private、protected三种,描述如下:
public:公有成员,在类的外部是可访问的,可以不通过类函数来进行访问和修改
private:私有成员,在类的外部是不可访问的,甚至是不可查看的。只有类和友元函数可以访问私有成员
protected:受保护的成员,受保护成员变量或函数与私有成员十分相似,但有一点不同,保护成员在派生类(即子类)中是可访问的
定义格式和使用方法如下:

#include 
using namespace std;

class hello_world
{
public:
    int public_value; /* 公有成员 */
private:
    int private_value; /* 私有成员 */
protected:
    int protected_value; /* 受保护的成员 */

public:
    void set_value(int value1, int value2); /* 类函数,用来操作私有成员和受保护的成员 */
    void show_value(); /* 打印所有的成员值 */
};

void hello_world::set_value(int value1, int value2)
{
    this->private_value = value1;
    this->protected_value = value2;
}

void hello_world::show_value()
{
    std::cout << "public_value: " << public_value << std::endl;
    std::cout << "private_value: " << private_value << std::endl;
    std::cout << "protected_value: " << protected_value << std::endl;
}

int main(int argc, char const *argv[])
{
    hello_world hw;

    hw.public_value = 1;
    // hw.private_value = 2; 错误,无法访问
    // hw.protected_value = 3; 错误,无法访问
    hw.set_value(2, 3);

    hw.show_value();

    return 0;
}

打印结果:
public_value: 1
private_value: 2
protected_value: 3

 

友元函数

友元函数是定义在类外部,但有权访问类的所有私有(private)成员和保护(protected)成员。尽管友元函数的原型有在类的定义中出现过,但是友元函数并不是成员函数,使用方法如下:

#include 
using namespace std;

class hello_world
{
public:
    int public_value; /* 公有成员 */
private:
    int private_value; /* 私有成员 */
protected:
    int protected_value; /* 受保护的成员 */

public:
    void set_value(int value1, int value2, int value3); /* 类函数 */
    friend void friend_show_value(hello_world hw); /* 友元函数 */
};

void hello_world::set_value(int value1, int value2, int value3)
{
    this->public_value = value1;
    this->private_value = value2;
    this->protected_value = value3;
}

void friend_show_value(hello_world hw)
{
    hw.set_value(1, 2, 3);
    std::cout << "public_value: " << hw.public_value << std::endl;
    std::cout << "private_value: " << hw.private_value << std::endl;
    std::cout << "protected_value: " << hw.protected_value << std::endl;
}

int main(int argc, char const *argv[])
{
    hello_world hw;

    friend_show_value(hw);
    return 0;
}

打印结果:
public_value: 1
private_value: 2
protected_value: 3

可以看到在友元函数friend_show_value()中,可以访问到hello_world class中的private和protected成员,但是注意只是访问,没有权限修改,如果你在friend_show_value()函数中写hw.private_value = 2;会报错的。

 

this指针

this指针指向对象本身

你可能感兴趣的:(C++)