当前位置: 首页 > news >正文

c++基础知识二

1.面向对象

1.1 定义

面向对象编程是一种程序设计方法,它将数据和操作数据的方法封装在一起,形成类。类是一种用户自定义的数据类型,它包含了数据和对数据的操作方法。面向对象编程的特点包括封装、继承、多态

1.2 访问控制符

· public 公有属性,方法。都可以访问
· protected 只能自己和子类访问
· private 只能自己访问

#include <iostream>
#include <string>
using namespace std;
class Test
{
   
public:
	string name;
	int age;
	
	void show_name()
	{
   
		cout << name << endl;
	};
};

int main()
{
   
	Test t;
	t.name = "Tom";
	t.age = 10;
	t.show_name();
	return 0;
}

1.3 构造函数

构造函数是特殊的成员函数,在对象创建时自动调用,用于初始化对象的状态
Person(int a){} — 类名(参数列表){函数体}
特点如下:
· 构造函数无返回值,也不需要加void,构造函数没有函数类型。
· 构造函数的函数名称要与类名一致
· 构造函数具有形参列表,并可以发生函数重载
· 编译器会自动调用构造函数,无需手动调用,并且只调用一次

#include <iostream>
#include <string>

using namespace std;

class Test
{
   
public:
    Test()
    {
   
        cout << " first test " << endl;
    }

    Test(int a)
    {
   
        cout << " test  a : " << a << endl;
    }

};

// 根据参数的不同,调用不同的构造函数
int main()
{
   
    Test t;
    Test ta(1);
    return 0;
}
//输出结果
//first test 
//test  a : 1

1.4 构造函数初始化列表

· 没使用初始化列表的构造函数,初始化成员变量会先调用默认构造函数,然后再赋值。
而参数列表初始化则避免了这种情况,直接通过初始化列表进行初始化,从而提高了效率。
· const成员和引用类型的成员(&)必须在初始化列表中初始化,因为它们不能在构造函数体内赋值。
· 如果成员是一个类类型对象,那么使用初始化列表可以直接调用其构造函数进行初始化,而不是先调用默认构造函数再进行赋值。

1.4.1基本示例

class Test
{
   
public:
	Test(int a, int b): num1(a), num2(b)
	{
   
		cout << " num1的初始化值为a, num2的初始化值为b " << endl;
	}
private:
	int num1;
	int num2;
};

1.4.2 const 成员和引用成员 示例

class Test
{
   
public:
	Test(int a, int b): num1(a), num2(b)
	{
   
		cout << "构造函数初始化" << endl;
	}
private:
	const int num1;
	int & num2;
};

1.4.3

class A
{
   
public:
	A(int a)
	{
   
		cout << " a : " 

相关文章:

  • 剑指offer经典题目(三)
  • 基于springboot的“协同过滤算法的高考择校推荐系统”的设计与实现(源码+数据库+文档+PPT)
  • 使用模板报错:_G.unicode.len(orgline.text_stripped:gsub(“ “,““))
  • JavaScript保留小数位及提示toFixed未定义
  • 解决文件夹解压中文字符产生乱码的问题
  • SQLI漏洞公开报告分析
  • JS 数组解构
  • 无人机飞控的二次开发,视觉定位
  • 空杯见月,满杯见己
  • 全文 - MLIR Toy Tutorial Chapter 4: 使用 interfaces 开启 通用变换
  • C++怎么调用类中的函数
  • 阿里云CDN应对DDoS攻击策略
  • #苍穹外卖#(个人使用)
  • MyBatis-Plus 的 FieldStrategy 属性
  • 2025年危化品安全管理人员备考指南|智能题库+核心考点解析
  • 工会成立100周年纪念,开发职工健身AI运动小程序、APP方案推荐
  • CDN流量技术详解
  • SpringMVC基础一(SpringMVC运行原理)
  • Navicat连接远程PostGreSQL失败
  • prometheus整合jmx_exporter 使用jmx_exporter监控Kafka